使用 Python 在注册表 运行 键中创建新值?

Creating new value inside registry Run key with Python?

我正在尝试在 Windows 7 中的 运行 键下创建一个新值。我正在使用 Python 3.5,但我无法写入该键。我当前的代码是在我试图修改其值的键下创建一个新键。

from winreg import *

aKey = OpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS)

SetValue(aKey, 'NameOfNewValue', REG_SZ, '%windir%\system32\calc.exe')

当我运行这个时,它在运行下创建一个键并将其命名为"NameOfNewKey",然后将默认值设置为calc.exe路径。但是,我想为 运行 键添加一个新值,这样当我启动时,calc.exe 将 运行.

编辑:我找到了答案。应该是SetValueEx函数而不是SetValue。

这是一个可以 set/delete 一个 运行 键的函数。

代码:

def set_run_key(key, value):
    """
    Set/Remove Run Key in windows registry.

    :param key: Run Key Name
    :param value: Program to Run
    :return: None
    """
    # This is for the system run variable
    reg_key = winreg.OpenKey(
        winreg.HKEY_CURRENT_USER,
        r'Software\Microsoft\Windows\CurrentVersion\Run',
        0, winreg.KEY_SET_VALUE)

    with reg_key:
        if value is None:
            winreg.DeleteValue(reg_key, key)
        else:
            if '%' in value:
                var_type = winreg.REG_EXPAND_SZ
            else:
                var_type = winreg.REG_SZ
            winreg.SetValueEx(reg_key, key, 0, var_type, value)

设置:

set_run_key('NameOfNewValue', '%windir%\system32\calc.exe')

要删除:

set_run_key('NameOfNewValue', None)

要导入 win32 库:

try:
    import _winreg as winreg
except ImportError:
    # this has been renamed in python 3
    import winreg