参照元EXEにこんなマニフェストファイルを作る
<?xml version="1.0" encoding="utf-8"?>
<assembly
xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd"
manifestVersion="1.0"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asmv3:trustInfo>
<asmv3:security>
<requestedPrivileges>
<requestedExecutionLevel level="asinvoker" uiAccess="false"/>
</requestedPrivileges>
</asmv3:security>
</asmv3:trustInfo>
<assemblyIdentity name="ConsoleApplication2.exe" type="win32" version="1.0.0.0" processorArchitecture="x86" />
</assembly>
一般的なasInvokerさせるだけのマニフェストファイル
このEXEを参照設定するEXEを作る
<?xml version="1.0" encoding="utf-8"?>
<assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity name="ConsoleApplication1.exe" version="1.0.0.0" type="win32" />
<dependency>
<dependentAssembly asmv2:dependencyType="install" asmv2:codebase="ConsoleApplication2.exe.manifest" asmv2:size="791">
<assemblyIdentity name="ConsoleApplication2.exe" version="1.0.0.0" processorArchitecture="x86" type="win32" />
<hash xmlns="urn:schemas-microsoft-com:asm.v2">
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>QxFD7+L7wmhqlRn8FEQn83p5JK8=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
</assembly>
自動でこんなマニフェストが作られる。
極めつけつは起動しないこと。
"C:\Users\localnaka\Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe.Manifest" のアクティブ化コンテキストの生成に失敗しました。マニフェストまたはポリシー ファイル "C:\Users\localnaka\Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication1\bin\Debug\ConsoleApplication2.exe.MANIFEST" 行 14 のエラーです。 requestedPrivileges 要素はコンポーネント マニフェストでは使用できません。
1.exeが参照する側、2.exeが参照される側
参照する側のmanifestを読んで、依存関係から2.exeを実行時に参照して2.exe.manifestを確認するとrequestedPrivilegesを発見。でもコンポーネント(たぶんここでは参照されるもののDLLとしてはという意味っぽい)ではこの要素を置くとだめなようだ。
結論。
VistaではEXEの参照はできない。