打开注册表
win32api.RegOpenKey(hKey, subKey, reserved=0, samDesired=win32con.KEY_READ)
hKey:一个已打开的注册表键的句柄,或者是一个预定义的根键常量(如win32con.HKEY_LOCAL_MACHINE)。
subKey:要打开的子键的名称,以字符串形式给出。
reserved:保留,通常设置为0。
samDesired:请求的访问权限。
关于samDesired参数,它指定了请求的访问权限。win32con.KEY_ALL_ACCESS是最高级别的权限,它允许你进行所有的注册表操作,包括读取、写入、删除等。然而,为了安全考虑,通常不建议使用KEY_ALL_ACCESS,除非你确实需要这些权限,并且理解它们带来的安全风险。
除了win32con.KEY_ALL_ACCESS之外,win32con模块还提供了其他一些常用的注册表权限常量:
win32con.KEY_READ:允许读取键和值。
win32con.KEY_WRITE:允许设置值,创建子键,枚举子键和值。
win32con.KEY_EXECUTE:与KEY_READ相同,但不包括枚举子键的权限。
win32con.KEY_CREATE_LINK:在Windows Vista及更高版本中,允许创建符号链接。
win32con.KEY_CREATE_SUB_KEY:允许在键下创建新的子键。
win32con.KEY_ENUMERATE_SUB_KEYS:允许枚举键下的子键。
win32con.KEY_NOTIFY:允许请求更改通知。
win32con.KEY_SET_VALUE:允许设置值。
通常,你可以通过组合这些常量来请求所需的权限。例如,如果你想要读取和写入权限,你可以使用win32con.KEY_READ | win32con.KEY_WRITE。
另外,请确保在不再需要注册表键句柄时关闭它,以避免资源泄漏。你可以使用win32api.RegCloseKey(key)来做到这一点。
读取注册表项的值
import win32api
import win32con
key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, win32con.KEY_READ)
value, type = win32api.RegQueryValueEx(key, "PythonScript")
print("键值:", value)
print("类型:", type)
参数:
key: 注册表键的句柄,通常通过win32api.RegOpenKeyEx或win32api.RegCreateKeyEx获得。
value_name: 要设置的值的名称。如果为空(""),则设置该键的默认(未命名)值。
reserved: 通常设置为0。这是保留参数,通常不需要更改。
type: 值的类型。在win32con模块中定义了许多这样的类型。
data: 要设置的值的数据。
注册表值类型:
win32con.REG_BINARY: 二进制数据。
win32con.REG_DWORD: 32位数字(在Python中,你可能需要将其转换为ctypes.c_uint32或int)。
win32con.REG_DWORD_BIG_ENDIAN: 大端序的32位数字(不常用)。
win32con.REG_EXPAND_SZ: 可扩展的字符串(包含环境变量引用的字符串)。
win32con.REG_MULTI_SZ: 多个以null分隔的字符串组成的字符串数组。
win32con.REG_QWORD: 64位数字(在Python中,你可能需要将其转换为ctypes.c_uint64或int)。
win32con.REG_NONE: 没有定义的类型(不常用)。
修改注册表项的值
import win32api
import win32con
key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, win32con.KEY_WRITE)
win32api.RegSetValueEx(key, "PythonScript", 0, win32con.REG_SZ, "C:\\path\\to\\script.py")
win32api.RegCloseKey(key)
删除注册表项
import win32api
import win32con
win32api.RegDeleteKey(win32con.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\PythonScript")