Vista下开发,由于UAC,即使Administrator用户组,运行的程序默认也不是管理员权限。这样将导致一些问题,比如:获取硬盘序列号会失败、注册表中除HKEY_CURRENT_USER外的添加删除将失败...
解决问题的方法:
⒈ 右键→以管理员权限运行;
⒉ 关闭UAC。
如果需要让程序默认拥有管理员权限,则有两个方法,但都不太理想:
方法一:
比如要把 D:\Test\Test.exe 改为管理员权限,则需要在:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
新增一个字符串键值:
名称设置为“D:\Test\Test.exe”
数值数据设置为“RUNASADMIN”
方法二:
在exe的工程中找manifest 中的最后一行之前加下面的代码:进行编译就可以了,
不过这样的exe只能运行管理员权限下,如果以一般用户登录,需要输入管理员的帐号及密码才行。一般都是不设requireAdministrator,而是设其为asInvoker。
不过在有些没打补丁的XP sp2的系统上,用manifest提升权限可能导致系统重启,谨慎使用!
解决问题的方法:
⒈ 右键→以管理员权限运行;
⒉ 关闭UAC。
如果需要让程序默认拥有管理员权限,则有两个方法,但都不太理想:
方法一:
比如要把 D:\Test\Test.exe 改为管理员权限,则需要在:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
新增一个字符串键值:
名称设置为“D:\Test\Test.exe”
数值数据设置为“RUNASADMIN”
方法二:
在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>
<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提升权限可能导致系统重启,谨慎使用!
终于将开发平台升级到VS2005



