В Windows при открытии командной строки (cmd.exe) ключи реестра:
HKLM\Software\Microsoft\Command Processor
HKCU\Software\Microsoft\Command Processor
проверяются на значение, называемое «AutoRun». Если найден, пакетный файл, указанный в значении, выполняется, обеспечивая функциональность, подобную autoexec. Если оба ключа содержат значения 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" );
Все, что я пытаюсь, работает отлично (в этом командном окне запускается), но поведение автозапуска никогда не происходит.