Windows では、コマンド プロンプト (cmd.exe) を開くと、レジストリ キーは次のようになります。
HKLM\ソフトウェア\マイクロソフト\コマンド プロセッサ
HKCU\ソフトウェア\マイクロソフト\コマンド プロセッサ
「AutoRun」と呼ばれる値がチェックされます。見つかった場合、値で指定されたバッチ ファイルが実行され、autoexec のような機能が提供されます。両方のキーに AutoRun 値が含まれている場合、両方が実行されます。素晴らしい!
cmd.exe の実行に使用Process.Start
していますが、AutoRun の動作が発生しません。私の現在のコードは次のとおりです。
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" );
私が試したことはすべて完全に機能します (コマンド ウィンドウが起動されるという点で) が、AutoRun の動作はまったく発生しません。