レジストリを介してシェルオープンコマンドを登録しようとしていて、複数のプログラムを開きたいので、次のようにしてみました。
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myFile\Shell\Open\Command]
@="cmd /k calc & notepad & exit"
calc
およびnotepad
は、それを示すための単なる例です。
このように使用すると、電卓とメモ帳は開きますが、コマンドプロンプトはメモ帳を閉じるまで開いたままです。 cmd /k calc & calc & exit
に変更すると、2つの電卓インスタンスが表示され、コマンドプロンプトは必要に応じて閉じられます。
なぜそれがメモ帳で動作しないのですか?
コマンドプロンプトを開いたままにせずに、レジストリのShell openコマンドで複数のプログラムを起動する別の方法を知っている人はいますか?
代わりに次のコマンドを使用してこれを行うことができます。
cmd /k start calc & start notepad & exit
したがって、.reg
ファイルを次のようにします。
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myFile\Shell\Open\Command]
@="cmd /k start calc & start notepad & exit"
calc
が正常に機能する理由(Windows 10ではWindows 7では機能しません)は、calc.exe
プロセスが別のプロセス(Calculator.exe
)を開始して終了し、コマンドが続行します。
これはnotepad.exe
には当てはまりません。つまり、notepad.exe
が閉じるのを待ってコマンドがスタックします。
start
コマンドは、cmd
が次のステップに進むことができるように、別のウィンドウでプロセスを開始するために使用されます。