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