我已經評論說:「將程序設置寫入註冊表不是給予您應用程序管理權限的正確原因」。不過,在任何情況下都包含UAC清單是一個好主意。常見的requestedExecutionLevel
應該是level="asInvoker"
。 see the docs
"Q: Adding manifest for admin rights request for delphi 7"
創建以下4個文件(2臺):
(UAC只)
uac.manifest
<?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="MyApp" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
uac。RC
1 24 "uac.manifest"
(UAC + XP主題)
uac_xp.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="MyApp" version="1.0.0.0" processorArchitecture="x86"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<!-- Windows Vista application security requirements. -->
<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>
<!--Windows 7-->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--Windows Vista-->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
</assembly>
uac_xp.rc
1 24 "uac_xp.manifest"
通過所需rc
文件(uac.rc
或uac_xp.rc
)添加到您的項目 「項目>添加到項目」 菜單項。這將在您的項目文件中創建的{$R}
指令:
program Project1;
{.$R 'uac.res' 'uac.rc'} // UAC only
// OR
{$R 'uac_xp.res' 'uac_xp.rc'} // UAC + XP Themes
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
注意{$R 'uac_xp.res' 'uac_xp.rc'}
。 Delphi會自動編譯rc
到res
文件。
或者,您可以通過Delphi IDE外的brcc32 uac.rc
編譯rc
文件。然後手動將{$R 'uac_xp.res'}
添加到您的項目中。
請確保您不使用任何其他XP清單。
將程序設置寫入註冊表並不是給您的應用程序管理員權限的正確原因!這是一個非常糟糕的主意。 – kobik
人們不知道爲什麼你不做其他開發人員所做的,並將程序設置寫入正確的位置。 –
我正在將它們寫入Hkey當前用戶,從我閱讀的內容來看,它應該可以在沒有管理員的情況下寫入。 – Clinton