我有正常的权限运行的EXE,但也有(使用VSS /卷影复制为例),我需要管理员权限(如果我没有记错的话)的情况下
我们的想法是把在一个单独的EXE需要额外的特权码,并根据需要启动它。
这件事情,我很少需要,但我还是需要把它作为一个不得已的选择(这是说,我很少需要调用它,也许一次/两次,平均日)
我的问题是:我怎么能说从一个普通的EXE管理员升高的过程吗?
我有正常的权限运行的EXE,但也有(使用VSS /卷影复制为例),我需要管理员权限(如果我没有记错的话)的情况下
我们的想法是把在一个单独的EXE需要额外的特权码,并根据需要启动它。
这件事情,我很少需要,但我还是需要把它作为一个不得已的选择(这是说,我很少需要调用它,也许一次/两次,平均日)
我的问题是:我怎么能说从一个普通的EXE管理员升高的过程吗?
在Vista和更高版本启用UAC,最好的选择是提供一个UAC清单第二EXE(最好是作为资源嵌入,但也可以使用外部.manifest的文件中完成),设置requestedExecutionLevel
值requireAdministrator
。 然后,你可以CreateProcess()
的EXE文件正常。 如果提供清单是不是一种选择,或者如果你需要支持XP和/或非UAC设置,那么你可以使用ShellExecute/Ex()
指定"runas"
动词来代替。 在这些设置中,操作系统会提示许可和帐户凭据用户,然后根据需要采用适当的安全权限的新的进程。
另一种选择是第三方CreateProcess...Elevated()
和ShellExecute...Elevated()
实施本条规定:
Vista的UAC:权威指南