【发布时间】:2011-05-16 17:49:18
【问题描述】:
在 Windows 中,当打开命令提示符 (cmd.exe) 时,注册表项:
HKLM\Software\Microsoft\命令处理器
HKCU\Software\Microsoft\命令处理器
检查名为“AutoRun”的值。如果找到,则执行值中命名的批处理文件,提供类似自动执行的功能。如果两个键都包含 AutoRun 值,则两者都将运行。太棒了!
我正在使用Process.Start 运行 cmd.exe,但没有出现自动运行行为。我当前的代码是:
private openShell( string folder )
{
ProcessStartInfo startInfo = new ProcessStartInfo()
{
FileName = Environment.GetEnvironmentVariable( "COMSPEC" ) ?? "cmd.exe",
Arguments = "/k cd \"" + folder + "\"",
UseShellExecute = true
};
try
{
using ( var exeProcess = System.Diagnostics.Process.Start( startInfo ) )
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
}
我也尝试过将其简化为最简单的形式:
System.Diagnostics.Process.Start( "cmd.exe" );
我尝试的一切都运行良好(即启动了一个命令窗口),但从未发生自动运行行为。
【问题讨论】:
-
检查注册表的代码在哪里?
-
可以了,我没发现代码有什么问题
-
如果您只将“自动运行”放在 HKLM 密钥中,您的问题可能是虚拟化。你有没有在 HKCU 中放了一些东西却一无所获?另外,您是否通过手动启动命令提示符对此进行了测试,所以您知道唯一的问题是您的代码如何启动它们?