4

For example, if I have Excel installed and it appears in the start menu, when I hover my mouse on it the most recently used documents are displayed on the right.

They also appear when I right click the icon of an open application in the taskbar.

Where is this list of documents stored for all the applications? How can I clear it for a particular application?

1 Answer 1

3

Answer in this thread, I don't understand the second step "PInvoke", maybe someone could explain.

https://stackoverflow.com/questions/4678445/clean-windows-7-start-menu-mru-list

Now this is the solution for my question:

I Cleaned the values under the Registry Keys HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count and HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count

Then I executed the following PInvoke to refresh the cache of the 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);
}
6
  • 1
    Thanks! Looks like they have encrypted everything there in rot13 format. That's why I couldn't find the when I searched the registry! (I guess PInvoke is just an Windows API call to ask Windows to re-read the values from registry after you've tinkered with them.)
    – KalEl
    Commented Jan 28, 2011 at 4:12
  • How do you execute Pinvoke?
    – Moab
    Commented Jan 28, 2011 at 5:29
  • @KalEl: The API call is SHChangeNotify(). P/Invoke is not directly related to Windows API. Also known as Platform Invocation Services, it's just a method of calling native code (often DLL functions, including Windows API) from "managed" (.NET Runtime) code. C# is a .NET language. Commented Jan 28, 2011 at 6:37
  • use sliver.com/dotnet/snippetcompiler to do the P/Invoke. Put the "using System.Runetime.InteropServices" at the top of the code file, and the rest into the "main() {}", between the curly brackets. Then start the thing (somewhere theres a button). It should open up a commandline Window which disappears shortly after.
    – sinni800
    Commented Jan 28, 2011 at 7:54
  • I'll do it for you non-programmers. Download this: dl.dropbox.com/u/16862782/ClearCache.cs and the SnippetCompiler (one post up) and open the .CS file in SnipperCompiler. Then hit the green "start" arrow in the toolbar. When the black window appears, just hit a button, the command has been executed. (What I said in my previous comment was garbage, it does NOT go into Main(). It goes into the class definition)
    – sinni800
    Commented Jan 28, 2011 at 8:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .