2014-03-27 41 views
0

我使用不具有更高权限启动进程“以管理员身份”不工作

ProcessStartInfo pInfo = new ProcessStartInfo(); 
     pInfo.FileName = fileToExcecute; 
     pInfo.UseShellExecute = false; 
     pInfo.RedirectStandardOutput = false; 
     pInfo.RedirectStandardError = false; 
     pInfo.CreateNoWindow = true; 
     if (runAsAdministrator) 
      pInfo.Verb = "runas"; 

     Process p = Process.Start(pInfo); 

最终用户被要求选择他们是否希望在运行程序的程序中下面的代码提升模式与否。 但是,当runAsAdministrator为真时,上述内容不会以“管理员”身份启动程序。我已经手动'以管理员身份'运行'fileToExcute',并提示对计算机进行更改。

然后,我在'fileToExecute'中添加了一个清单,每次运行该程序时都会提升权限,并直接运行该程序时,系统会提示您确认是否允许对计算机进行更改。 当我运行使用上面的代码上面的程序,我得到:

System.ComponentModel.Win32Exception (0x80004005): 
The requested operation requires elevation at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
    at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at 
    #HLg.#ic.#zNg(String #ANg) in #pOg:line 135 

我真的想第一个选项工作。我已经尝试了一切,不能解决为什么第一个选项不起作用。

回答

3

您不能将Verb属性与UseShellExecute = false合并,因为动词依赖于该功能。设置UseShellExecutetrue它应该工作。

+0

谢谢。我发现这非常令人沮丧:-( – David

0

我改变了我的代码,并没有使用pInfo配置选项。我只是改变了一切p.verb =“runas”等,它现在工作。

相关问题