Win7程序提升权限
2012-08-13 15:49
155 查看
在Windows Xp以及之前的Windows版本中,当具有管理员权限的账户登录后,创建一个安全令牌(security token),之后其他应用程序启动后将会具有这个令牌,继承管理员账户的高权限,从而更容易对系统造成破坏。于是在Windows vista之后的版本中进行了改动,具有管理员权限的用户登录之后,除了创建安全令牌之外,还会创建一个经过筛选的安全令牌(将只被授予标准用户的权限)。
在Win7下通过右键应用程序,“Run as administrator”运行从而获得提升后的权限;以先前博客<<修改IP、DNS、MAC工具VC源码实现>>为例,应用程序中需要管理员启动的CMD中运行命令行,所以必须"Run as administrator"来运行修改器(修改器以管理员身份运行后,创建的CMD运行程序继承其权限)。这种方式是由用户去手动提升权限,下面介绍两种方法可以通过程序提升权限。
(1)编写manifest文件(hello.manifest)
(2)工程配置(采用vs2005)
在"附加清单文件"中添加hello.manifest
参考:
(1)http://msdn.microsoft.com/en-us/library/bb756929.aspx
(2)《Windows核心编程(第五版)》4.5节
在Win7下通过右键应用程序,“Run as administrator”运行从而获得提升后的权限;以先前博客<<修改IP、DNS、MAC工具VC源码实现>>为例,应用程序中需要管理员启动的CMD中运行命令行,所以必须"Run as administrator"来运行修改器(修改器以管理员身份运行后,创建的CMD运行程序继承其权限)。这种方式是由用户去手动提升权限,下面介绍两种方法可以通过程序提升权限。
1. 方法一:通过manifest文件
在编译链接程序的时候,通过编写manifest文件嵌入应用程序中,来指示提升权限后运行。(1)编写manifest文件(hello.manifest)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2"> <ms_asmv2:security> <ms_asmv2:requestedPrivileges> <ms_asmv2:requestedExecutionLevel level="highestAvailable"> </ms_asmv2:requestedExecutionLevel> </ms_asmv2:requestedPrivileges> </ms_asmv2:security> </ms_asmv2:trustInfo> </assembly>
(2)工程配置(采用vs2005)
在"附加清单文件"中添加hello.manifest
2. 方法二:使用ShellExecuteEx
在一个没有提升权限的执行进程中,采用ShellExecuteEx可以创建具有提升权限的应用程序:SHELLEXECUTEINFO sei = {sizeof(SHELLEXECUTEINFO)}; sei.lpVerb = "runas"; //提升权限 sei.lpFile = "cmd.exe"; sei.nShow = SW_SHOWNORMAL; if (!ShellExecuteEx(&sei)) { //创建失败执行代码 }
参考:
(1)http://msdn.microsoft.com/en-us/library/bb756929.aspx
(2)《Windows核心编程(第五版)》4.5节
相关文章推荐
- delphi编写的程序如何在win7下提升权限
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- 利用ShellExecuteEx手动提升用户特权,以管理员权限来运行程序。win7会有UAC弹窗
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- 利用manifest提升程序为VISTA/WIN7管理员权限
- vs2005 生成文件与win7兼容 \ 利用manifest提升程序为WIN7管理员权限
- 利用manifest提升程序为VISTA/WIN7管理员权限
- 转载:如何指定程序在Vista上面需要提升权限运行(Elevated)
- 转载:编写C#程序让其在Win7 下以管理员权限运行
- 转载:如何指定程序在Vista上面需要提升权限运行(Elevated)
- win7下的UAC机制与提升管理员权限
- INNO SETUP 打包程序 在WIN7下 报CREATE PROCESS 错误的权限问题解决方法
- MFC管理员权限(UAC下的程序权限提升)
- VC2005 编译Win7以管理员权限启动的可执行程序
- 在XP里提升自己的程序以获得特定的权限
- 编写C#程序让其在Win7 下以管理员权限运行
- 转载:如何指定程序在Vista上面需要提升权限运行(Elevated)
- VC中程序提升管理员权限
- 提升ASP.NET程序的权限