【问题标题】:ProcessStartInfo Verb runas not workingProcessStartInfo 动词 runas 不工作
【发布时间】:2017-01-20 16:02:47
【问题描述】:

以下代码有什么问题?

        ProcessStartInfo startInfo = default(ProcessStartInfo);

        startInfo = new ProcessStartInfo(SetupProgramPath)
        {
            UseShellExecute = true,
            Verb = "runas",
            WindowStyle = ProcessWindowStyle.Normal,
            CreateNoWindow = false
        };

        Process.Start(startInfo); 

预计会提示输入凭据,但没有显示任何内容。系统已启用 UAC,不应更改。 感谢您在这方面的帮助。提前谢谢你。

【问题讨论】:

  • 在下一行覆盖= default(ProcessStartInfo); 时分配它有什么意义? `
  • 这似乎不是问题。我也可以删除它。
  • 程序启动了吗?
  • 没有。如果我禁用 UAC,我将能够启动该程序。但是,不建议这样做。

标签: c# wpf


【解决方案1】:

我用下面的代码解决了这个问题

ProcessStartInfo startInfo = default(ProcessStartInfo);

startInfo = new ProcessStartInfo(SetupProgramPath)
{
    UseShellExecute = true,
    Verb = "runas",
    WindowStyle = ProcessWindowStyle.Normal,
    FileName = "msiexec",
    Arguments = "/i \"" + SetupProgramPath + "\"",
    CreateNoWindow = false
};

Process.Start(startInfo); 

【讨论】:

  • 所以您最初忘记设置FileName 因此没有启动任何进程?
  • 这是runas 真正为我工作的唯一方式。像 proc.StartInfo.Verb = "runas"; 这样手动设置它和 shell 不起作用。
【解决方案2】:

如果您想要求用户输入其他用户的凭据,请使用“runasuser”:

ProcessStartInfo startInfo = new ProcessStartInfo(SetupProgramPath)
{
    UseShellExecute = true,
    Verb = "runasuser",
    WindowStyle = ProcessWindowStyle.Normal,
    CreateNoWindow = false
};

Process.Start(startInfo); 

【讨论】:

  • 他们试图以管理员身份运行,而不是用户
  • 感谢您的帮助。不幸的是,它没有用。它既没有提示输入凭据,也没有启动安装程序。我的安装程序驻留在网络中
  • 我认为“SetupProgramPath”的值是错误的。只需尝试首先使用本地应用程序,例如“calc.exe”。然后尝试将安装应用程序的路径用作字符串文字。如果可行,请尝试修复填充“SetupProgramPath”的代码
  • 很抱歉打扰您。当我禁用 UAC 并删除 Verb =“runasuser”或 Verb =“runas”时,它非常完美。现在的问题是在启用 UAC 的情况下运行程序。我能够正确访问路径。
  • 它是否适用于“calc.exe”或“regedit.exe”?如果是,请告诉我们 SetupProgram 有什么特别之处。如果没有,请向我们展示一个完整且最小的示例,因为这在这里有效。
猜你喜欢
  • 2016-10-16
  • 2018-11-01
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 2022-06-11
  • 2013-01-14
相关资源
最近更新 更多