各種IDEでビルドしたときのデフォルトの埋め込みマニフェスト
VC6
マニフェストなし
vc2005 console
1 2 3 4 5 6 7 |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.6195" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> </assembly> |
vc2008 win32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> </assembly> |
リンカオプション/MANIFESTUAC:NOにすれば上半分は消える
vc2010 win32
1 2 3 4 5 6 7 8 9 |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> </assembly> |
vcruntimeの指定がなくなる。
requestedExecutionLevel level=”asInvoker”がつくとVirtualStoreを利用しなくなる。もともとの意味はInvoker(起動者=起動したプロセス)の実行レベルを引き継ぐということ。これがないとProgram Files下においてファイルを作ったりしたときなどVirtualStoreに保存されるようになる(古いアプリと扱われる)
埋め込みマニフェスト(リソースにRT_MANIFESTとして持つ)の確認はResEditなどでできる。
asInvoker有り無しのexe