创建一个文本文件,内容如下:
<?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>
存为123.manifest.(You can add more items to this manifest. You can also remove
Microsoft.Windows.Common-Controls
parts to disable the theme support.参考:http://stackoverflow.com/questions/4757533/delphi-7-vista-windows-7-manifest. )
再创建一个文本文件,内容如下:
1 24 "123.manifest"
存为123.rc;其中:1-代表资源编号 ;24-资源类型为RTMAINIFEST。
然后在BCB中打你的工程,选择菜单上的Project-->Add to project-->找到刚才创建的123.rc,添加进来编译就行了.
如果BCB版本较高可参考:http://blog.sina.com.cn/s/blog_9e1698c80101h3nz.html.
用下面的方法也可以:
在Windows Vista里面,ShellExecuteEx lpVerb的参数可以传入runas命令,使得系统调用 ShellExecuteEx 的时候,会强制将目标文件以完全admin模式启动,即使目标文件的manifest没有申明需要完全admin权限。
效果等同于在目标程序上右键点击,然后选择 run as administrator 菜单内容。
如果在IDE中运行程序时报错“Unable to create process:请求的操作需要提升”,这是因为delphi调试启动需要UAC权限,delphi没有以管理员身份启动,这样delphi createprocess出来的进行就同样不是管理员权限了。只要以管理员身份启动delphi即可。