如何执行现成的 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);
}
我需要使用从 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);
}