私は現在、Windows の[スタート] -> [ファイル名を指定して実行] ダイアログに表示される、以前に実行したコマンドのリストをすぐにクリアするプログラムに取り組んでいます。HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRUキーを削除してこのリストをクリアする手順は、十分に文書化されています。ただし、これらの変更を有効にする前に、次のいずれかを行う必要があるようです。
- コンピュータを再起動します
- [スタート] -> [シャットダウン] を選択し、[キャンセル]を選択します。
これらはどちらも、私が達成しようとしているタスクには理想的ではありません: #1 はユーザーにとって非常に破壊的であり、#2 は追加のユーザー操作を必要とするように見えます。
ユーザーの他のアクティビティの中断を最小限に抑えながら、ユーザーの操作を必要とせずにこの情報をすぐに (そしてプログラムで) 強制的にリロードする方法を知っている人はいますか? プログラムを実行した直後にユーザーの実行履歴を消去したいのですが、ユーザー側でそれ以上のアクション (上記 #2 の「シャットダウン」->「キャンセル」トリックを使用するなど) や強制的な再起動を必要とせずに。 .
または、別の角度から問題にアプローチするには: [スタート] -> [シャットダウン] -> [キャンセル] をクリックすると、Windows エクスプローラーは RunMUI キーを再読み込みします。 ユーザーがShut Downを選択してからCancelを選択せずに、同様のリロードを強制する方法はありますか?
私がすでに試したこと:
- [Shutdown]を選択して [ Cancel ] を選択しているときに、 procmonを使用して explorer.exe の状態を監視します。Explorer が RunMRU キーに書き込みを行っているのを確認しましたが、これをトリガーする原因を特定できませんでした。
- 「再起動せずにrunmruをリロード」という行に沿った多数のGoogle検索。ほとんどの結果は依然として上記の方法 1 を推奨していますが、いくつかの結果では 2 番目の方法を推奨しています。
- 限定的な MSDN API 試験。RegFlushKey呼び出しは有望に見えますが、これまで使用したことがないため、さまざまなプロセスによってキャッシュされたレジストリ情報に適用されるかどうかはわかりません。
提案やその他の情報をいただければ幸いです。