【问题标题】:The requested operation requires elevation请求的操作需要提升
【发布时间】:2014-10-25 08:44:53
【问题描述】:

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

如何解决?

【问题讨论】:

  • 我最初的问题是您是否尝试过以管理员身份运行它(您的应用程序)?
  • 是的..我只是以管理员身份开始的
  • 我记得在某处看到runas 需要UseShellExecute = true。如果将UseShellExecute 设置为true 是否有效?
  • 当我将其分配为 true 时,它​​显示“UseShellExecute 必须为 false 才能以用户身份启动进程

标签: c#


【解决方案1】:

很遗憾,你做不到

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

同时。

原因:

  • Verb 仅在 UseShellExecute = true 时被识别,但是
  • 重定向 IO 需要 UseShellExecute = false

更多信息:

我猜在您的情况下,您将不得不跳过使用runas,而是确保您的应用程序已经以正确的用户帐户/权限启动。这应该可以工作,因为processes started by elevated processes "inherit" elevation

【讨论】:

  • 我只能以提升的权限运行....我不想重定向输入/输出...你能建议我代码吗..@Heinzi
  • 有一种方法可以在清单中写入应用程序应该始终以管理员身份运行,对吗?我不记得怎么了,因为已经有一段时间了,但这可能是一件好事。我确定有些地方记录了它。
  • @user3797438:如果你不想重定向输入/输出,为什么要将RedirectStandardInput设置为true?当然,代码中的每一行都有充分的理由存在,对吧?
猜你喜欢
  • 2021-11-17
  • 1970-01-01
  • 2020-09-26
  • 2011-10-30
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2021-12-27
相关资源
最近更新 更多