如何执行现成的 Windows 运行 命令

How to execute a ready-made Windows Run command

我需要使用从 windows 注册表收到的命令行启动默认邮件客户端。如何在 C# 中做到这一点? Process.Start 无法执行整行,需要拆分,但我不知道它会是什么

例如,在注册表中

,我得到了一条指向 运行 的行
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook\shell\open\command

如何使用 c# 运行 此命令行?

"C:\PROGRA~2\MICROS~1\Office16\OUTLOOK.EXE" /recycle

更复杂的例子

%systemRoot%\system32\rundll32.exe "%ProgramFiles%\Internet Explorer\hmmapi.dll",OpenInboxHandler

这样做了

string[] lines = cmd.Split('"');
if (lines.Length > 1)
{
    ProcessStartInfo process = new ProcessStartInfo(lines[1].Trim());
    process.UseShellExecute = true;
    if (lines.Length > 2)
        process.Arguments = lines[2].Trim();
    Process.Start(process);
}

但不要吃它

%systemRoot%\system32\rundll32.exe "%ProgramFiles%\Internet Explorer\hmmapi.dll",OpenInboxHandler

问题已解决! 要执行任意shell命令,需要为cmd.exe

指定/C参数
public static void ExecuteShellCommand(string command)
{
    var ProcessInfo = new ProcessStartInfo("cmd.exe", "/C " + command)
    {
        WindowStyle = ProcessWindowStyle.Hidden,
        CreateNoWindow = true,
        UseShellExecute = true
    };
    Process.Start(ProcessInfo);
}