【问题标题】:CMD Command doesn't execute [duplicate]CMD命令不执行[重复]
【发布时间】:2021-06-23 16:03:55
【问题描述】:

我正在尝试从 c# 在 cmd 中运行此命令,但由于某种原因它不起作用。但是当我将我的参数更改为“/C ipconfig”时,它工作得很好。我不明白为什么。我究竟做错了什么? 这是我的代码:

   Process process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        process.StartInfo.Arguments = $"/C wbadmin start backup - backupTarget:{TargetBackupDrive}: -include:{LocationOs}: -allcritical - quiet";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.StartInfo.Verb = "runas";
        process.Start();
        CmdOutput = process.StandardOutput.ReadToEnd();
        process.WaitForExit();

【问题讨论】:

  • The docs for wbadmin 说它必须运行提升。您的应用是否以管理员身份运行?
  • 为什么你RedirectStandardInput = true 然后从不提供任何输入?
  • 是的,我的错我忘了删除它。但这并没有改变任何东西。
  • @OlivierRogier 我在发布我的问题之前检查了这些帖子。它没有用。
  • 您发布的代码无法使用。您正在尝试使用runas,同时将UseShellExecute 设置为false。由于wbadmin 需要提升的进程才能工作,因此您发布的代码无法工作。

标签: c# .net command-line runas start-process


【解决方案1】:

当 UseShellExecute 设置为 false 时,动词“runas”不起作用,正如此处指出的那样:Set ProcessStartInfo.EnvironmentVariables when Verb="runas"

您可以使用我们将 UseShellExecute 设置为 true 的 UserName 和 Password 属性提供管理员凭据,然后在 shell 中执行您的命令。

【讨论】:

  • 我尝试将 UseShellExecute 设置为 true。但它并没有改变任何东西。
猜你喜欢
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 2011-07-24
  • 2016-06-17
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多