2

Windows 7 のスタート メニューから最近起動したアプリケーションをプログラムで消去する方法はありますか?

Winodws 7 のスタート メニューの対応する項目が削除されるように、削除するレジストリ エントリやファイルを探しています。

4

3 に答える 3

2

SHAddToRecentDocs (SHARD_PIDL,NULL) は、surya が提案するようにレジストリを台無しにするのではなく、最近のドキュメントをクリアするための文書化された方法です。

あなたの質問には「アプリケーション」という言葉が含まれているので、実際にはアプリケーションのリストを意味していると思います。そのリストはユーザーに「属している」ため、プログラムでそれを変更する実際の方法はありません。

文書化されていないハッキーなルートに行きたい場合は、特定の .lnk の IContextMenu を取得して、「このリストから削除」コマンドを呼び出すことができます。

XP では、スタート メニュー アプリケーションの使用状況は HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist{75048700-EF1F-11D0-9888-006097DEACF9} に保存されますが、エクスプローラーはこれらのエントリをキャッシュするため、キーを削除するだけでは削除できません。最初に探検家を殺します。

于 2011-01-13T22:20:37.203 に答える
0

これが私の質問の解決策です:

レジストリ キーの下の値を消去しました

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);
}

よろしく、ボリス

于 2011-01-14T15:21:48.013 に答える
-1

レジストリで、不要なものを削除します。鍵はHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs

于 2011-01-13T09:28:19.670 に答える