如何让生成的程序以管理员身份运行(C++builder 2010)

(转载自http://feng06.blog.163.com/blog/static/13501502014102385528860/)

在vista以后的windows版本中,有些时候需要提升编译后生成程序的权限,即希望让生成的程序以管理员身份运行。虽然在一般情况下,可以使用鼠标右键选择的方式来强行以管理员身份运行,但它并没有屏蔽普通运行方式,而且普通人通常也不会使用右键选择以管理员身份运行,所以必须在生成程序时就限定程序只能以管理员方式来运行。以下以C++builder为例来说明一下具体方法。

先简单说一下,在vista以后的windows版本中,微软引入了UAC机制,它的目的是防止程序对操作系统本身进行恶意篡改。要让程序以管理员身份运行,就需要在程序中引入UAC标注,也即让程序显示“UAC盾牌”。这在C++builder中,是通过读取程序在Resource里的MANIFEST资源来决定的,为此,C++builder必须在资源里面嵌入MANIFEST信息。

1.打开记事本,写入下面的内容,并保存成一个名为uac.manifest的文件。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
	<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>
	<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
		<asmv3:windowsSettings
			xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
			<dpiAware>True/PM</dpiAware>
		</asmv3:windowsSettings>
	</asmv3:application>
</assembly>


上述中的requireAdministrator就表示程序需要管理员才能运行。

2.再打开记事本,写入下面的内容,并保存成一个名为uac.rc的文件。

1  24  uac.manifest

3.确保上面两个文件在同一目录下,打开命令行窗口,进入到该目录下,运行brcc32 uac.rc -fo uac.res,回车后会看到该目录下多出了一个资源文件uac.res。

4.以右键选择管理员身份运行C++builder(这点很重要),新建一个VCL Form Application的工程文件,先保存并运行一下。然后把上面生成的uac.res文件拷贝到该工程目录下。点击菜单Project->Add to Project(或按shift+F11),定位到工程目录并选择uac.res文件(注意扩展名过滤)并点击打开,这时应该在项目管理器中可以看到该文件被加入到了工程中。最后打开工程的cpp文件(默认为Project1.cpp),在第二行#pragma hdrstop之前加入一句#pragma resource "uac.res",接着保存并编译运行整个工程(可直接按F9),这时生成的程序就带有“UAC盾牌”了!找到生成的可执行程序,会看到程序的图标被加上了一个“盾牌”,表示它必须以管理员身份运行。

5.如果需要让生成的程序脱离开发环境独立行动,可点击菜单Project->Options(或按Shift+Ctrl+F11),先找到Linking选项卡,把Dynamic RTL前面的勾去掉;再找到Packages选项卡,把Build runtime packes前的勾也去掉,保存工程并编译,生成的可执行文件就可以在其它未装C++builder的电脑上以管理员身份运行了!

6.如果上面的程序在编译中提示“Unable to create process”,是因为C++builder没有以管理员身份运行!上述过程适用于C++builder2007及以前的版本,若是以后的版本就简单一些了,做完前面的1~3步后,第4步可点击菜单Project->Options,选择Application选项卡,在runtime themes一项中改为use custom manifest就行了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值