3 回答
TA贡献1921条经验 获得超9个赞
虽然不完全,但是您可以采取相反的做法- 如果已经拥有特权,则可以放弃特权。因此,您可以使用Kate Gregory列出的方法之一,以管理员身份启动程序。然后,放弃不需要的特权;请参阅如何在Windows上的C ++中删除特权。
TA贡献1911条经验 获得超7个赞
如果您希望应用程序始终处于高程状态,则可以通过在其中建立一个清单(而不是从技术上进行编译)或通过将外部清单与exe放在同一文件夹中来为它提供清单。如果您要决定以个人身份运行它,请右键单击exe或快捷方式,然后选择“以管理员身份运行”。如果要从代码启动它,则runas在启动该过程时使用动词作为@vcsjones注释。例如:
ShellExecute( NULL,
"runas",
"c:\\windows\\notepad.exe",
" c:\\temp\\report.txt",
NULL, // default dir
SW_SHOWNORMAL
);
TA贡献1946条经验 获得超3个赞
您只能在流程创建期间提升它。当一个进程已经运行时,就无法更改其安全性令牌:它要么提升运行,要么不提升运行。
如果您的应用程序需要执行管理任务,并且通常在不提升的情况下运行,则您必须创建另一个.exe文件,该文件将要求使用清单文件进行提升。要启动提升过程,您必须使用ShellExecute或ShellExecuteEx运行。从您的主流程中,您将需要一种将命令传递到将运行提升的新流程的方法。
有关UAC的更多信息,请阅读“ 设计Windows Vista系列UAC应用程序 ”。
- 3 回答
- 0 关注
- 671 浏览
添加回答
举报