私が起動しているプログラムは、Windows のメモ帳です (再起動が必要なプログラムのインストール後の readme ファイル用)。管理者権限で Windows 7 Professional を使用しています。
次のソリューションを機能させたいと思います。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
Name: myregentry
Type: REG_SZ
Data: notepad.exe C:\test2.txt
ただし、RunOnce は同期です ( http://msdn.microsoft.com/en-us/library/aa376977%28v=vs.85%29.aspx )。これにより、完全に黒い画面 (スクリーンショット @ tinypic ) の上にメモ帳が起動し、テキストを読む以外に何もすることができなくなります。起動は待機し、メモ帳ウィンドウが閉じられた後にのみ再開されます。これは私の使用には受け入れられません (ユーザーを混乱させる可能性があります)。
次のソリューションを機能させることができました。
1) レジストリ エントリを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
Name: myregentry
Type: REG_SZ
Data: C:\launchreadme.bat
2) C:\launchreadme.bat に自動削除バッチ ファイルを作成します。
@ECHO OFF
start notepad.exe C:\test2.txt
REM **** Delete this script ****
DEL "%~f0"
これは私が望むことをします。しかし、私は知りたいです:
最初にこのバッチファイルを生成せずに、レジストリのみを使用して、これを行うためのよりクリーンな方法はありますか?
Webには「レジストリからメモ帳を1回起動する方法」の例がたくさんありますが、(私が見つけた)誰もこの問題について言及していないため、これは他の人にとって役立つ可能性があります。
追加情報:
レジストリ エントリで "start" を機能させることができませんでした (
start notepad.exe C:\test1.txt
起動時に何もしません)。RunServicesOnce (RunOnce の代わりに) は、プログラムを 1 回だけ非同期で起動していましたが、Windows 7 にはもう存在しないようです。
Run (RunOnce の代わりに) も非同期であり、うまく機能します。しかし、明らかに、再起動のたびにこの readme ファイルを起動したくありません。