Windows 7 のスタート メニューから最近起動したアプリケーションをプログラムで消去する方法はありますか?
Winodws 7 のスタート メニューの対応する項目が削除されるように、削除するレジストリ エントリやファイルを探しています。
SHAddToRecentDocs (SHARD_PIDL,NULL) は、surya が提案するようにレジストリを台無しにするのではなく、最近のドキュメントをクリアするための文書化された方法です。
あなたの質問には「アプリケーション」という言葉が含まれているので、実際にはアプリケーションのリストを意味していると思います。そのリストはユーザーに「属している」ため、プログラムでそれを変更する実際の方法はありません。
文書化されていないハッキーなルートに行きたい場合は、特定の .lnk の IContextMenu を取得して、「このリストから削除」コマンドを呼び出すことができます。
XP では、スタート メニュー アプリケーションの使用状況は HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist{75048700-EF1F-11D0-9888-006097DEACF9} に保存されますが、エクスプローラーはこれらのエントリをキャッシュするため、キーを削除するだけでは削除できません。最初に探検家を殺します。
これが私の質問の解決策です:
レジストリ キーの下の値を消去しました
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count
次に、次の PInvoke を実行して、Explorer.exe のキャッシュを更新しました。
C#:
using System.Runtime.InteropServices;
[DllImport("shell32.dll")]
static extern void SHChangeNotify(int wEventId, int uFlags, IntPtr dwItem1, IntPtr wItem2);
private const int SHCNE_ASSOCCHANGED = 0x08000000;
private const int SHCNF_IDLIST = 0x0000;
private void ClearCache()
{
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
}
よろしく、ボリス
レジストリで、不要なものを削除します。鍵はHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs