前提条件
- Python3.6
- SCons-3.0.0
- VisualStudio2015
やり方
SConsからVisualStudioビルドする際に権限昇格を必須にするには下記のように /MANIFESTUAC
を指定します。
SConstruct
env = Environment()
env.Append(
LINKFLAGS = [
'/MANIFEST:embed',
"/MANIFESTUAC:level='requireAdministrator' uiAccess='false'",
],
)
env.Default(env.Command(None, env.Program('main.cpp'), '$SOURCE.abspath'))
これで scons
を実行すれば権限昇格ダイアログがポップアップします。
/MANIFESTUAC
の記述はそのままマニフェストファイルのXMLアトリビュートとして展開されるようで、
空白やシングルクオートが入っていないとコンパイルは成功するもののダイアログが出なくてハマりました。
どんな風に記述されているかは、/MANIFEST:embed
を /MANIFEST
に変えることで main.exe.manifest が出力されるので
そちらで確認してください。ちなみに /MANIFEST
を入れ忘れると /MANIFESTUAC
も無視されるので注意してください(これもハマった)