为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式提升进程特权?

以编程方式提升进程特权?

慕后森 2019-06-14 15:28:12
以编程方式提升进程特权?我试图使用InstallUtil.exe安装一个服务,但通过Process.Start..下面是代码:ProcessStartInfo startInfo = new ProcessStartInfo (m_strInstallUtil, strExePath);System.Diagnostics.Process.Start (startInfo);哪里m_strInstallUtil是指向“InstallUtil.exe”和strExePath是我的服务的完全限定路径/名称。从提升的命令提示符运行命令行语法是可行的;从我的应用程序运行(使用上面的代码)不能。我假设我正在处理某个进程提升问题,那么我将如何在一个提升的状态下运行我的进程呢?我需要看看ShellExecute为了这个?这都是在WindowsVista上完成的。我正在VS 2008调试器中运行进程,将其提升为ADMIN权限。我也试过startInfo.Verb = "runas";但它似乎解决不了这个问题。
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

通过将startInfo对象的谓词属性设置为“runas”,可以指示应该使用提升的权限启动新进程,如下所示:

startInfo.Verb = "runas";

这将导致Windows的行为就像进程已从资源管理器中使用“RunasAdministrator”菜单命令启动一样。

这确实意味着UAC提示将出现,并且需要用户确认:如果这是不可取的(例如,因为它发生在一个冗长的进程中),则需要通过以下方式运行整个主机进程创建和嵌入应用程序声明(UAC)若要求“最高的Available”执行级别:这将导致应用程序启动后立即出现UAC提示,并导致所有子进程在没有额外提示的情况下以更高的权限运行。

编辑:我看到你刚刚编辑了你的问题,说“runas”不适合你。这真的很奇怪,因为它应该(并为我在几个生产应用程序)。但是,通过嵌入清单来要求父进程以提升的权限运行肯定是可行的。


查看完整回答
反对 回复 2019-06-14
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

根据文章ChrisCorio:教你的应用程序好好玩WindowsVista用户帐户控制,MSDN杂志,2007年1月,只有ShellExecute检查嵌入的清单,并在需要时提示用户进行提升。CreateProcess而其他API则不然,希望它能有所帮助。

另见:与.chm相同的条款.


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 598 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信