Delphi编译的程序如何获取管理员权限

时间:2023-11-25 14:16:38

1.制作manifest文件

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>

用记事本保存为:UAC.manifest

2.第二步对于D7和XE系列有差异。

(1)XE系列

Delphi编译的程序如何获取管理员权限

如上图所示,选择 Use custom manifest,然后选择刚刚保存的文件。

Delphi编译的程序如何获取管理员权限

这里最好选择All configurations,这样无论是调试模式还是release都支持了。

然后编译工程,输出exe文件。可以看到小盾牌了。

Delphi编译的程序如何获取管理员权限

运行程序,会弹出提权确认框:

Delphi编译的程序如何获取管理员权限

(2)Delphi 7

D7里面是没有这个设置的,可以通过资源文件来实现。

a.新建一个文件文件,输入内容如下:

1 24 "UAC.manifest"

1-代表资源编号

24-资源类型为RTMAINIFEST

将文件保存为:uac.rc

b.将RC文件编译为资源文件

brcc32 uac.rc

得到uac.RES 文件,注意uac.rc的路径。

c.修改工程文件(DPR)

在{$R *.RES}后面追加

{$R 'uac.RES'}

d.编译工程文件,得到EXE文件

Delphi编译的程序如何获取管理员权限

小盾牌看见了吧?

运行EXE

Delphi编译的程序如何获取管理员权限

提权确认框也弹出来了。