C++builder或Delphi工程设置以管理员身份运行

来源:互联网 发布:液压绘图软件 编辑:程序博客网 时间:2024/05/22 06:11

创建一个文本文件,内容如下:

<?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即可。


0 0