Windows 7 – Clear Frequently Used Apps

email me

There are two methods to clear the Frequently used applications on the Start Menu.

#1

One is by using group policy.

User Configuration > Administrative Templates > Start Menu and Taskbar > Remove frequent programs list from the Start Menu.

#2

The second one is by deleting the reg key that holds the shortcut data. Note, this data is encrypted using ROT-13 (yeah, I know…Microsoft strikes again). You may have to kill explorer.exe and reload it for it to take effect (or just reboot).

Screenshot of the reg keys

Frequent Apps

 

Reg Key

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count

If you’re managing an enterprise—where computers have more than one user—the reg key must be deleted from each user’s reg hive. To scan through the respective registry hives, I created this script to do the scan and the reg key delete.

 

Script

This can run as System Account or Administrator.

Option Explicit

Dim objShell, strComputer, objWMIService, objRegistry, strKeyPath, strValueName, strSubPath

Dim objAccount, objSubkey, arrSubkeys, strValue, strUser

on error resume next

Set objShell = CreateObject("Wscript.Shell")

Const HKEY_LOCAL_MACHINE = &H80000002

Const OverwriteExisting = TRUE

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\ProfileList"

objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys

For Each objSubkey In arrSubkeys

on error resume next

strValueName = "ProfileImagePath"

strSubPath = strKeyPath & "\" & objSubkey

objRegistry.GetExpandedStringValue HKEY_LOCAL_MACHINE,strSubPath,strValueName,strValue

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objAccount = objWMIService.Get("Win32_SID.SID='" & objSubkey & "'")

strUser = objAccount.AccountName

objSubkey = trim(objSubkey)'trims whitespace

strUser = trim(strUser)'trims whitespace

'LOGIC TO DETERMINE IF REGISTRY HIVE IS TO BE ACCESSED

if strUser = "SYSTEM" then strUser=""

if strUser = "LOCAL SERVICE" then strUser=""

if strUser = "NETWORK SERVICE" then strUser=""

'if strUser = "ADMINISTRATOR" then strUser=""

if strUser <> "" then

on error resume next

objShell.Run "%comspec% /c reg delete HKU\" & objSubkey &  "\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count" & " /f",0,true

Wscript.Sleep 1000

end if

Next

' Clear Session

objShell = ""
strComputer = ""
objWMIService = ""
objRegistry = ""
strKeyPath = ""
strValueName = ""
strSubPath = ""
objAccount = ""
objSubkey = ""
arrSubkeys = ""
strValue = ""
strUser = ""

WScript.Quit(0)