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

如何在C# ASP.NET中启动MdSched.exe自动选择立即重启执行测试

可行解决方案

方案1:使用MdSched.exe原生命令行参数(优先推荐)

MdSched.exe本身支持静默运行参数,无需额外模拟交互即可实现需求:

  • 调用时传入/quiet参数即可完全跳过GUI交互,静默配置下次系统重启时自动运行内存诊断
  • 如果需要实现和「立即重启并运行测试」完全一致的效果,配置完成后额外调用系统重启命令即可
    注意:该操作需要进程持有管理员权限才可正常执行,否则会触发权限不足报错

C# 调用代码示例:

using System.Diagnostics;

public void RunMemoryDiagnosticWithAutoRestart()
{
    // 静默配置内存诊断任务
    ProcessStartInfo mdSchedInfo = new ProcessStartInfo
    {
        FileName = "MdSched.exe",
        Arguments = "/quiet",
        UseShellExecute = true,
        Verb = "runas" // 自动请求管理员权限
    };
    Process.Start(mdSchedInfo).WaitForExit();

    // 立即重启系统,不需要重启可删除下面这段
    ProcessStartInfo shutdownInfo = new ProcessStartInfo
    {
        FileName = "shutdown.exe",
        Arguments = "/r /t 0",
        UseShellExecute = true,
        Verb = "runas"
    };
    Process.Start(shutdownInfo);
}

方案2:直接修改注册表配置诊断任务

MdSched.exe的本质是修改系统注册表项配置诊断计划,你也可以直接操作注册表实现相同效果,全程无GUI弹出:
注意:修改HKLM路径下的注册表同样需要管理员权限

C# 操作代码示例:

using Microsoft.Win32;
using System.Diagnostics;

public void ConfigMemoryDiagnosticByReg()
{
    using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Memory Diagnostics", true))
    {
        if (key != null)
        {
            // 赋值1 = 下次重启执行标准内存诊断,赋值2 = 下次重启执行高级诊断
            key.SetValue("Schedule", 1, RegistryValueKind.DWord);
        }
    }

    // 需要立即重启则放开下面注释
    // Process.Start(new ProcessStartInfo("shutdown.exe", "/r /t 0") { UseShellExecute = true, Verb = "runas" });
}

方案3:模拟GUI交互(不推荐,兼容性差)

如果必须走启动GUI再模拟点击的路径,可以通过Windows API的FindWindow、SendMessage等方法定位弹窗、模拟按钮点击,该方案依赖不同系统版本下窗口标题、按钮控件ID的固定值,兼容性较差,仅做备选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:57:02