中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

manifestの付いているEXEを参照するとmanifestが自動生成される

参照元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の参照はできない。

投稿日時 : 2007年5月27日 23:04

コメントを追加

# re: manifestの付いているEXEを参照するとmanifestが自動生成される 2007/05/28 9:06 usay

やっぱりexeの参照なんて汚いことするとはまっちゃうんですね(;_;

# re: manifestの付いているEXEを参照するとmanifestが自動生成される 2007/05/28 9:55 シャノン

exeとdllではマニフェストスキーマが違いますからね。
XPでも「たまたまできていた」と考えるべきでしょう。

タイトル
名前
URL
コメント