Search code examples
pythonpywin32win32com

Check in Python if Windows registry key already exists


Got the following code:

    aReg = ConnectRegistry(None,HKEY_CURRENT_USER)
aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_WRITE)
try:   
   SetValueEx(aKey,registry_key_name,0, REG_SZ, r"" + folder + "\" + file_name) 
except EnvironmentError:                                          
    print "Encountered problems writing into the Registry..."
CloseKey(aKey)
CloseKey(aReg)

I would like to add some check if not already exists so only add it if there is no such Key


Solution

  • From this question I guess the best option is to use _winreg.OpenKey and handle the WindowsError exception gracefully assuming as registry key non existent.

    from _winreg import *
    exists = True
    aReg = ConnectRegistry(None,HKEY_CURRENT_USER)
    try:
        aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_WRITE)
    except WindowsError:
        exists = False
    
    try:
        if not exists:
            SetValueEx(aKey,registry_key_name,0, REG_SZ, r"" + folder + "\" + file_name) 
    except EnvironmentError:                                          
        print "Encountered problems writing into the Registry..."
    
    CloseKey(aKey)
    CloseKey(aReg)