1.序

用python实现在注册表查找某个值,是否存在,若不存在,就增加某个值

2.源码

import winreg
import os
import sys
 
def check_registry_value_exists(key_path, value_name):
    try:
        # 尝试打开注册表键
        with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_READ) as key:
            # 尝试读取值
            winreg.QueryValueEx(key, value_name)
            return True
    except FileNotFoundError:
        # 如果键不存在,返回False
        return False
    except OSError:
        # 如果值不存在,返回False
        return False
 


def add_to_startup(name,file_path=""):
    if file_path == "":
        file_path = os.path.realpath(sys.argv[0])
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Run', 0, winreg.KEY_SET_VALUE)
    winreg.SetValueEx(key, name, 0, winreg.REG_SZ, file_path)
    winreg.CloseKey(key)


# 使用示例
key_path = r"Software\Microsoft\Windows\CurrentVersion\Run"
value_name = "myApp"
exists = check_registry_value_exists(key_path, value_name)
#print(f"The value '{value_name}' exists in the registry: {exists}")




if not exists:
    print('need to add')
    add_to_startup(value_name)