web-dev-qa-db-ja.com

レジストリ:シェルオープンコマンド-複数のプログラムを開く

レジストリを介してシェルオープンコマンドを登録しようとしていて、複数のプログラムを開きたいので、次のようにしてみました。

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\myFile\Shell\Open\Command]
@="cmd /k calc & notepad & exit"

calcおよびnotepadは、それを示すための単なる例です。

このように使用すると、電卓とメモ帳は開きますが、コマンドプロンプトはメモ帳を閉じるまで開いたままです。 cmd /k calc & calc & exitに変更すると、2つの電卓インスタンスが表示され、コマンドプロンプトは必要に応じて閉じられます。

なぜそれがメモ帳で動作しないのですか?

コマンドプロンプトを開いたままにせずに、レジストリのShell openコマンドで複数のプログラムを起動する別の方法を知っている人はいますか?

4
patpat

代わりに次のコマンドを使用してこれを行うことができます。

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が次のステップに進むことができるように、別のウィンドウでプロセスを開始するために使用されます。

1
Worthwelle