请求的操作需要提升

问题描述:

我试图运行从另一个用户帐户名称的exe文件,它显示了以下错误请求的操作需要提升

System.ComponentModel.Win32Exception: The requested operation requires an elevation 
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() 
    at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) 

这里是我的代码

ProcessStartInfo pro = new ProcessStartInfo(application); 
pro.UseShellExecute = false; 
pro.Verb = "runas"; 
pro.WorkingDirectory = workingdirectory; 
pro.RedirectStandardInput = true; 
pro.RedirectStandardOutput = true; 
pro.CreateNoWindow = true; 

Process process = Process.Start(pro); 

如何解决这个问题?

+0

我最初的问题是你是否试图以管理员身份运行它(你的应用程序)? – 2014-09-01 07:08:12

+0

是的..我以管理员身份启动它 – user3797438 2014-09-01 07:08:53

+1

我记得在某处阅读'runas'需要'UseShellExecute = true'。如果你将'UseShellExecute'设置为'true',它会工作吗? – Heinzi 2014-09-01 07:12:27

不幸的是,你不能做

  • 提升的权限运行和
  • 重定向输入/输出

同时进行。

原因:

  • VerbUseShellExecute = true,但
  • 重定向IO需要UseShellExecute = false只认可。

的更多信息:

我在你的处境猜你将不得不使用runas跳过,而是确保应用程序已经开始与正确的用户帐户/权限。这应该起作用,因为processes started by elevated processes "inherit" elevation

+0

我只能使用提升权限运行....我不想重定向输入/output...can你建议我的代码.. @ Heinzi – user3797438 2014-09-01 07:25:43

+0

有一种方法可以在清单中写一个应用程序应该始终以管理员身份运行,对吧?我不记得是如何因为它已经有一段时间了,但是'd可能是一件好事,我确信有地方记录它 – 2014-09-01 07:26:52

+0

@ user3797438:如果你不想重定向输入/输出,为什么你要将'RedirectStandardInput'设置为'true'?当然,你的代码中的每一行都有一个很好的理由,对吗? – Heinzi 2014-09-01 07:45:44