使用 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
我正在尝试在 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