Newer
Older
mruclean / mruclean.py
# Clean up selected MRU cruft from Win32 Registry
# Copyright (c) 2002, TundraWare Inc., All Rights Reserved
# $Id: mruclean.py,v 1.6 2002/12/09 21:10:56 tundra Exp $

##############################################################################
#                                                                            #
#     XX   XX     XX    XXXXXX   XX   XX    XXXX   XX   XX    XXXX     XX    #
#     XX   XX    XXXX    XX  XX  XXX  XX     XX    XXX  XX   XX  X     XX    #
#     XX   XX   XX  XX   XX  XX  XXXX XX     XX    XXXX XX  XX         XX    #
#     XX X XX   XX  XX   XXXXX   XX XXXX     XX    XX XXXX  XX         XX    #
#     XXXXXXX   XXXXXX   XX XX   XX  XXX     XX    XX  XXX  XX  XXX    XX    #
#     XXX XXX   XX  XX   XX  XX  XX   XX     XX    XX   XX   XX  XX          #
#     XX   XX   XX  XX  XXX  XX  XX   XX    XXXX   XX   XX    XXX X    XX    #
#                                                                            #
#     THIS SOFTWARE MODIFIES YOUR WINDOWS REGISTRY AND CAN CORRUPT OR        #
#     OTHERWISE DAMAGE YOUR SYSTEM.  DO ****NOT**** RUN THIS ON YOUR         #
#     SYSTEM UNLESS:                                                         #
#           1) YOU THOROUGHLY UNDERSTAND WHAT IS GOING ON IN                 #
#              THIS PROGRAM.                                                 #
#           2) YOU HAVE VERIFIED THAT THE REGISTRY MODIFICATIONS IN          #
#              THIS PROGRAM ARE APPROPRIATE FOR ***YOUR*** SYSTEM            #
#                                                                            #
##############################################################################
                                                                       


############################################################
###                     Imports                          ###
############################################################

from _winreg import *


############################################################
###              Constants & Literals                    ###
############################################################

####################
# Constants
####################

FALSE = 0 == 1                # Booleans
TRUE = not FALSE


####################
# Literals
####################


############################################################
###                       Data                           ###
############################################################


#####
### These are keys at the lowest level of the registry that need
### cleaning.  That is, these keys contain only values, no subkeys.
#####

leafnodes = \
    ( \
    r"Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU", \
    r"Software\Microsoft\Windows\CurrentVersion\Applets\Wordpad\Recent File List", \
    r"Software\Microsoft\Windows\CurrentVersion\Applets\Paint\Recent File List", \
    r"Software\Microsoft\Office\9.0\PowerPoint\Recent File List", \
    r"Software\Microsoft\Office\9.0\Common\Open Find\Microsoft Excel\Settings\Save As\File Name MRU", \
    r"Software\Microsoft\Office\9.0\Excel\Recent Files", \
    r"Software\Microsoft\MediaPlayer\Player\RecentFileList", \
    )


#####
### These are keys with subkeys that need cleaning.  That is,
### each of the *subkeys* of each of these entries will be cleaned.
#####

subkeys = \
    ( \
    r"Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU", \
    )


############################################################
###                 Supporting Functions                 ###
############################################################


#####
### Initialize a key back to its empty state.
#####

def CleanKey(reg, key):
    try:
        DeleteKey(reg, key)
    except:
        pass
    CreateKey(reg, key)


############################################################
###                   Main Program                       ###
############################################################


### Connect to the local registry

reg  = ConnectRegistry(None,HKEY_CURRENT_USER)


### Clean the leafnodes

for entry in leafnodes:
    CleanKey(reg, entry)


### Clean the subkeys

for sk in subkeys:
    k = OpenKey(reg, sk , 0, KEY_READ)
    for i in range(0,1024):
        try:
            CleanKey(reg,  sk + "\\" + EnumKey(k,i))
        except EnvironmentError:
            break
    CloseKey(k)

### Clean the special cases

k = OpenKey(reg, r"Software\Microsoft\Photo Editor\3.0\Microsoft Photo Editor", 0, KEY_WRITE)
for x in range(1,1024):
    try:
        DeleteValue(k, "LastFile"+str(x))
        DeleteValue(k, "LastType"+str(x))
    except:
        pass
CloseKey(k)

CloseKey(reg)