一、要让程序本身运行时为管理员,有如下方法:
方法1 vs2008以上的话,在exe的工程中找manifest 中的最后一行之前加下面的代码:进行编译就可以了,
<ms_asmv3:trustInfo xmlns:ms_asmv3= "urn:schemas-microsoft-com:asm.v3 ">
<ms_asmv3:security xmlns:ms_asmv3= "urn:schemas-microsoft-com:asm.v3 ">
<requestedPrivileges>
<requestedExecutionLevel level= "requireAdministrator " uiAccess= "false "> </requestedExecutionLevel>
</requestedPrivileges>
</ms_asmv3:security>
</ms_asmv3:trustInfo>
不过这样的exe只能运行管理员权限下,如果以一般用户登录,需要输入管理员的帐号及密码才行。一般都是不设requireAdministrator,而是设其为asInvoker。不过在有些没打补丁的XP sp2的系统上,用manifest提升权限可能导致系统重启,谨慎使用!
VC6中没有manifest文件,添加一个“custom”资源,"resource type"填24,把资源ID改为1,把下面代码添加到其中即可,:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="test.exe.manifest"
type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
方法2 比如我把 D:\BitSpirit\BitSpirit.exe 改为管理员权限
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
新增一个字符串键值:
名称设置为“D:\BitSpirit\BitSpirit.exe”
数值数据设置为“RUNASADMIN”
该代码添加到VC资源中即可, 添加方式:
二、调用其他程序是,让其以管理员身份运行
ShellExecute(NULL,"RunAs",szFileName,NULL,NULL,SW_NORMAL);
添加一个“custom”资源,"resource type"填24,把资源ID改为1