オリジナル:msdn オンライン(英文)
この翻訳文は、機械翻訳を元に、日本語として読みやすいように編集しています。また、元のドキュメントはベータ版を対象に書かれているため、製品版とは異なることがあります。
また、現在、この文書の日本語版を確認していないために、翻訳文を掲載しています。正式なドキュメントが公開されたときには、そちらの記述が正式なものとなります。
このエントリは、直訴してみたにて、えむけいさんからいただいた指摘を元に、調査、作成しました。えむけいさん、ありがとうございます。
Windows Vista における、マニフェストを使用したアプリケーションのマーキング
Windows Vista で、アプリケーションを特徴づける正しい方法は、アプリケーションが何を必要とするかをオペレーティング・システムに伝える、アプリケーション マニフェストをプログラムに埋め込むことです。Windows Vista リリースで、明らかにされないか、あるいは無署名のコードが管理上の特権で走ることを可能にする条項があります。将来のリリースでは、昇格させられたアプリケーションを実行する唯一の方法は、アプリケーションが必要とする特権レベルを識別する、署名されたマニフェストを持つことになるでしょう。
アプリケーション マニフェスト スキーマ
アプリケーション マニフェストは Windows Vista リリースで新規に追加されたものではありません。マニフェストは Windows XP において、アプリケーション開発者に対して、アプリケーションが一緒にテストされた DLL のバージョンを識別する助けになるように、使われました。実行レベルを提供することは、その既存のマニフェストスキーマへの拡張子です。
Windows Vista アプリケーション マニフェストは、開発者がそれらのアプリケーションに求められた実行レベルの表わすのを許した属性で拡張されました。次のことはこれのためにフォーマットです。
<requestedExecutionLevel
level="asInvoker|highestAvailable|requireAdministrator"
uiAccess="true|false"/>
level
uiAccess
- false - アプリケーションはデスクトップでの入力を他のウインドウの UI に中継する必要がありません。アクセシビリティを提供するのではないアプリケーションが、誤ってこのフラグをそうするように設定するかもしれません。オンスクリーン キーボードのような、デスクトップ上の他のアプリケーションに入力を中継するアプリケーションで、true に設定されます。
- true - アプリケーションは、UI 保護レベルを迂回して、デスクトップ上のより高い特権で実行されているウインドウに入力を中継することを可能にされます。この設定はただ UI アクセさびリティ アプリケーションのためにだけ使われる必要があります。
昇格のための同意ポリシー
同意ポリシーは、特権を求めているアプリケーションを始動すると、ユーザーが与えなくてはならない承認のタイプを決定します。それはローカルなセキュリティー ポリシーによる設定によって制御されます。
システム ポリシーを参照、設定するために
- コントロールパネルから、「管理ツール」を開き、「ローカル セキュリティ ポリシー」を実行します(昇格ダイアログが表示されます)。
- 「セキュリティの設定」から「ローカル ポリシー」を選びます。そして、「セキュリティ オプション」を選択します。
- 「ユーザーアカウント制御:管理者承認モードでの管理者に対する昇格時のプロンプトの動作」を選択します。
ユーザーアカウント制御:管理者承認モードでの管理者に対する昇格時のプロンプトの動作 |
より高い認可でプログラムを実行する前に、ユーザーにどのように促すか決定します。(以下は、Vista RC1 での「説明」を転記しています)
|
最後に、昇格を不要とするためのマニフェスト ファイルを載せておきます。ファイル名を「実行ファイル名.exe.manifest」とし、下線部分を適切に書き換えて保存し、実行ファイルと同じディレクトリに置いてください。すでにマニフェストがある場合は、trustInfo セクションを加えてください。
なお、昇格をするためには、コードに対する署名が必要です。
<?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"
processorArchitecture="X86"
name="application"
type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
本文中で触れられていない項目
- assemblyIdentity version - ファイルのプロパティを表示したときに表示される、「バージョン情報」の中の、「ファイルバージョン」
- processorArchitecture - プロセッサのアーキテクチャ
- name - ファイル名のうち、拡張子を含まないもの
- type - win32
- description - 実行ファイルの説明
投稿日時 : 2006年9月26日 21:48