4

私が起動しているプログラムは、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回起動する方法」の例がたくさんありますが、(私が見つけた)誰もこの問題について言及していないため、これは他の人にとって役立つ可能性があります。

追加情報:

  1. レジストリ エントリで "start" を機能させることができませんでした (start notepad.exe C:\test1.txt起動時に何もしません)。

  2. RunServicesOnce (RunOnce の代わりに) は、プログラムを 1 回だけ非同期で起動していましたが、Windows 7 にはもう存在しないようです。

  3. Run (RunOnce の代わりに) も非同期であり、うまく機能します。しかし、明らかに、再起動のたびにこの readme ファイルを起動したくありません。

4

1 に答える 1