Windows XP/Vista/7でアプリを管理者として実行できるようにするDelphi7のマニフェストファイルの例はありますか?
この機能を使用してアプリケーションを実行すると、通常、 ユーザーアカウント制御(UAC) ダイアログが表示され、特権権限を要求されます。
手順は次のとおりです。
1。XPMan
:を削除します。プロジェクト内のXPMan
コンポーネントへの参照をすべて削除します。 XPMan
は、実行可能ファイルにデフォルトのマニフェストを追加して、Windowsがカスタマイズされたマニフェストを認識できないようにします。 XPMan
によって提供されるXPテーマについて心配する必要はありません。テーマのサポートは次のマニフェストに保持されています。
2。カスタマイズされたマニフェストを作成します:プロジェクトディレクトリにWin7UAC.manifest
のようなファイルを作成します(ファイル名は実際には関係ありません)。次の行をWin7UAC.manifest
に追加します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="App" version="3.1.0.0" processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-Microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</Assembly>
このマニフェストにさらにアイテムを追加できます。 Microsoft.Windows.Common-Controls
パーツを削除して、テーマのサポートを無効にすることもできます。
。マニフェストをリソースにコンパイルします:プロジェクトディレクトリにWin7UAC.rc
という名前のファイルを作成します。このファイルには次のような1行が含まれます。
1 24 "Win7UAC.manifest"
このファイルをコンパイルするには、cmdに移動し、プロジェクトディレクトリをポイントして、次のコマンドを実行します。
brcc32.exe Win7UAC.rc
4。リソース(マニフェスト)をプロジェクトに追加します:プロジェクトのユニットファイルの1つに、次の行を追加します。
{$R 'Win7UAC.res'}
この行を追加するのに適した場所は、プロジェクトのメインファイル(通常はProject1.dpr
という名前)と{$R *.res}
行の下です。
5。プロジェクトを再構築します
6。XPManコンポーネントをプロジェクトユニットのanyに追加すると、このUACマニフェストは正しく機能しなくなります。
ここにいくつかの有益なリンクがあります
DelphiおよびWindows Vistaのユーザーアカウント制御
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="x86" />
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"/>
</requestedPrivileges>
</security>
</trustInfo>
</Assembly>
これは私にとってはうまくいきます:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="x86"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" />
</requestedPrivileges>
</security>
</Assembly>
Delphi XEを使用して、これを機能させるには、[プロジェクト]-> [オプション]-> [アプリケーション]タブの[ランタイムテーマを有効にする]をオフにする必要がありました。
編集:申し訳ありませんが、このオプションを有効にすると機能するようです。