1.制作manifest文件
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 3 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 4 <security> 5 <requestedPrivileges> 6 <requestedExecutionLevel level="requireAdministrator" uiAccess="false"> 7 </requestedExecutionLevel> 8 </requestedPrivileges> 9 </security> 10 </trustInfo> 11 <dependency> 12 <dependentAssembly> 13 <assemblyIdentity type="win32" 14 name="Microsoft.Windows.Common-Controls" 15 version="6.0.0.0" 16 processorArchitecture="x86" 17 publicKeyToken="6595b64144ccf1df" 18 language="*"> 19 </assemblyIdentity> 20 </dependentAssembly> 21 </dependency> 22 </assembly>
用记事本保存为:UAC.manifest
2.第二步对于D7和XE系列有差异。
(1)XE系列
如上图所示,选择 Use custom manifest,然后选择刚刚保存的文件。
这里最好选择All configurations,这样无论是调试模式还是release都支持了。
然后编译工程,输出exe文件。可以看到小盾牌了。
运行程序,会弹出提权确认框:
(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文件:
小盾牌看见了吧?
运行EXE
提权确认框也弹出来了。