You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用CMD执行wbadmin备份命令失败但ipconfig正常运行问题求助

问题原因

  • 参数语法错误:你写的wbadmin参数存在多余空格,- backupTarget应为-backupTarget,- quiet应为-quiet,参数名和前面的减号是连为一体的,中间不能加空格,这是最直接的执行失败原因。
  • 管理员权限配置冲突:Verb = "runas" 是要求以管理员身份启动进程的配置,但该配置仅在UseShellExecute = true时生效,你当前设为false,导致权限提升不生效,而wbadmin执行备份操作必须要有管理员权限,会直接因为权限不足被拦截。
  • 参数拼接风险:如果TargetBackupDrive、LocationOs变量对应的路径包含空格,没有用引号包裹的话会被cmd识别为多个参数,导致命令解析错误。
  • 输出读取顺序问题:先调用ReadToEnd再等待进程退出,若进程输出内容过多会导致缓冲区满阻塞,出现程序假死情况。

修正后代码

根据你是否需要读取命令输出,可以选择对应方案:

方案1:不需要读取命令输出,自动申请管理员权限

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.UseShellExecute = true;
process.StartInfo.Verb = "runas";
process.Start();
process.WaitForExit();

方案2:需要读取命令输出,确保当前程序已以管理员身份运行

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.Start();
CmdOutput = process.StandardOutput.ReadToEnd();
process.WaitForExit();

内容的提问来源于stack exchange,提问作者Acarys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 22:24:03