吐槽
先吐槽下,Python的注册表操作库,winreg真是难用
权限问题
写完的Python脚本必须用管理员权限运行,才能对注册表进行写操作。否则会报PermissionError异常
这个时候需要调用Windows的API,重新启动一遍程序 runas administrator,将原来的程序退出。
代码也很简单
from __future__ import print_function
import ctypes, sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
# 将要运行的代码加到这里
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
else:#in python2.x
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)
Python代码实现注册表编辑
改成Python代码怎么写呢。这里需要用到python的winreg库。(Python2的叫_winreg)
OpenKey
先说下OpenKey这个函数的返回值可以作为下面函数的第一个参数。
SetValue, SetValueEx, DeleteValue,CreateKey, DeleteKey 等等
看下这个函数的用法
Opens the specified key.
key
An already open key, or any one of the predefined
sub_key
A string that identifies the sub_key to open.
reserved
A reserved integer that must be zero. Default is
access
An integer that specifies an access mask that desc
security access for