【问题标题】:Process.Start() not performing as expectedProcess.Start() 未按预期执行
【发布时间】:2012-11-23 22:01:44
【问题描述】:

如果我从提升的命令提示符运行takeown /F "C:\Program Files\Borland /A /R /D Y,我将获得Borland 文件夹的所有权。但是如果我运行下面的代码,什么都不会发生。尝试以管理员和普通用户身份运行。

Process process = new Process();
process.StartInfo.FileName = @"C:\Windows\System32\takeown.exe";
process.StartInfo.Verb = "runas";
process.StartInfo.Arguments = "/F \"C:\\Program Files\\Borland\" /A /R /D Y";
process.Start();
process.WaitForExit();  

我错过了什么?

【问题讨论】:

  • 我也有同样的问题。我尝试编写一个 PowerShell 脚本,该脚本使用 runas 对服务做一些事情……不走运。在我看来, runas != uac (在 Powershell 中会在提示符中询问您的密码,并且不会弹出 uac 对话框)。我也很想找到答案:)
  • 你是否启用了 UAC?它适用于我在工作中做它(并且 UAC 被禁用)。也许 UAC 阻止了你这样做?
  • 这是在 Windows 8 上且 UAC 已开启。
  • 嗯,也许 Windows 8 有不同的(本机)运行进程的方式?您的程序是否设置为 .net 或 winrt 程序?我想 winrt 对您可以调用的进程有限制。

标签: c# .net security process uac


【解决方案1】:

您需要在 startinfo 对象上将 useshellexecute 设置为 false,以便 UAC 提示您

【讨论】:

  • 我添加了“process.StartInfo.UseShellExecute = false;”但它似乎没有改变任何东西。
  • JimDel 你也有动词=runas 吗?似乎是两者结合起来完成了 UAC 提示
  • 我没有注意到您使用的是 Windows 8,也许微软已经改变了一些东西。但是,如果设置了这两个值,我总是会收到 UAC。
  • 谢谢亚历克斯。请参阅我所做的回答。
【解决方案2】:

格式化并重新安装 Windows 似乎可以解决问题。我希望我有一个更好的答案,但经过大量搜索,我发现没有任何效果。也许现有的安全设置阻止它工作。

【讨论】:

    【解决方案3】:

    有同样的问题。 Release build(但不是默认的“Debug”)对我有帮助。

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 2017-12-15
      • 2011-02-25
      • 2014-10-20
      • 2015-09-17
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多