/win32manifest (カスタムの Win32 マニフェスト ファイルのインポート) (C# コンパイラ オプション)
更新 : 2007 年 11 月
/win32manifest オプションを使用して、プロジェクトの移植可能な実行可能 (PE: Portable Executable) ファイルに埋め込むユーザー定義の Win32 アプリケーション マニフェスト ファイルを指定します。
/win32manifest: filename
引数
- filename
カスタム マニフェスト ファイルの名前と場所。
解説
既定では、"asInvoker" 要求実行レベルを指定するアプリケーション マニフェストが、Visual C# コンパイラによって埋め込まれます。このマニフェストは、実行可能ファイルをビルドするフォルダ内に作成されます。Visual Studio を使用する場合、通常この場所は bin\Debug フォルダまたは bin\Release フォルダになります。カスタム マニフェストを用意して、たとえば "highestAvailable" または "requireAdministrator" の要求実行レベルを指定する場合は、このオプションを使用してファイルの名前を指定します。
メモ : |
---|
このオプションと /win32res (Win32 リソース ファイルのインポート) (C# コンパイラ オプション) オプションは相互に排他的です。同じコマンド ライン内で両方のオプションを使用すると、ビルド エラーが発生します。 |
要求実行レベルを指定するアプリケーション マニフェストのないアプリケーションは、Windows Vista のユーザー アカウント制御機能によってファイルとレジストリが仮想化されます。仮想化の詳細については、「The Windows Vista Developer Story: Windows Vista Application Development Requirements for User Account Control (UAC)」を参照してください。
アプリケーションが次のいずれかの条件を満たす場合、アプリケーションは仮想化されます。
/nowin32manifest オプションを使用し、それ以降のビルド ステップでマニフェストを指定していないか、/win32res オプションを使用して Windows リソース (.res) ファイルの一部としてマニフェストを指定していない。
要求実行レベルを指定しないカスタム マニフェストを指定している。
Visual Studio は既定の .manifest ファイルを作成し、実行可能ファイルと共に debug ディレクトリおよび release ディレクトリに格納します。カスタム マニフェストは、任意のテキスト エディタで作成してプロジェクトに追加できます。または、ソリューション エクスプローラで [プロジェクト] アイコンを右クリックし、[新しい項目の追加] をクリックして、[アプリケーション一覧ファイル] をクリックします。新しいマニフェスト ファイルまたは既存のマニフェスト ファイルを追加すると、[マニフェスト] ボックスの一覧にそのファイルが表示されます。詳細については、「[アプリケーション] ページ (プロジェクト デザイナ) (C#)」を参照してください。
アプリケーション マニフェストは、カスタムのビルド後のステップで指定するか、/nowin32manifest (Win32 マニフェストの禁止) (C# コンパイラ オプション) オプションを使用して Win32 リソース ファイルの一部として指定できます。Windows Vista でアプリケーションのファイルとレジストリを仮想化する場合にも同じオプションを使用します。これにより、コンパイラで既定のマニフェストが作成され、移植可能な実行可能 (PE) ファイルに埋め込まれるのを防ぐことができます。
使用例
Visual C# コンパイラによって PE に挿入される既定のマニフェストの例を次に示します。
メモ : |
---|
コンパイラは、"MyApplication.app" という名前の通常のアプリケーションを xml に挿入します。これは、アプリケーションを Windows Server 2003 Service Pack 3 上で実行するための代替手段になります。 |
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
参照
参照
/nowin32manifest (Win32 マニフェストの禁止) (C# コンパイラ オプション)