所需操作需要提升权限

12

我正在尝试从另一个用户账户名运行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);

如何解决这个问题?


我的第一个问题是,您是否尝试以管理员身份运行它(您的应用程序)? - Matthew Haugen
是的,我最开始是以管理员身份启动它的。 - user3797438
1
我记得在某个地方看到过 runas 需要 UseShellExecute = true。如果你将 UseShellExecute 设置为 true,它能正常工作吗? - Heinzi
当我将其分配为true时,它会显示“UseShellExecute必须为false才能以用户身份启动进程。” - user3797438
1个回答

19

很遗憾,您不能同时进行以下操作:

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

原因:

  • Verb只有在UseShellExecute=true时才能识别,但同时
  • 重定向IO需要UseShellExecute=false.

更多信息:

我猜在您的情况下,您将不得不跳过使用runas,而是确保您的应用程序已经使用正确的用户帐户/权限启动。这应该可以工作,因为由提升的进程启动的进程“继承”了提升


我只想以提升的权限运行,而不想重定向输入/输出。你能给我提供一些代码建议吗?@Heinzi - user3797438
有一种方法可以在清单中编写,使应用程序始终以管理员身份运行,对吧?我不记得怎么做了,因为已经过了一段时间,但这可能是为此做的好事。我相信有记录它的地方。 - Matthew Haugen
如果您不想重定向输入/输出,为什么要将RedirectStandardInput设置为true?毫无疑问,您代码中的每一行都有存在的合理理由,对吗? - Heinzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接