_winreg模块可以用来操作windows的注册表
首先用OpenKey获得句柄handle:
-
_winreg.
OpenKey
(
key,
sub_key[,
res[,
sam]]
)
这个就是句柄
handler=winreg.OpenKey(winreg.HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client,'LocalDevices')就获得了指向LocalDevices的句柄,我们可以对它进行操作了.
windows注册表的组成是由类似键值对组成的,键(key)是上文说的LocalDevices,值分三种
name,type,data 我们想要获得键值,可以用EnumKey(key,index)和EnumValue(key,index)因为一个句柄下可能有很多Key和多个Value多亿需要索引index来确定位置,如果要遍历,可以用循环.
接下来的操作是对注册表的增删改查:
winreg.CreateKey(key,sub_key) 在key下创建一个subkey,返回值指向subkey
winreg.DeleteKey(key,sub_key) 该函数用于删除key下的指定subkey
winreg.SetValue(key,sub_key,type,value) 设置subkey的type和value(因为没规定名称,所以是第一个默认)
winreg.SetValueEx(key,value_name,reserved,type,value) 该函数用于设置key中对应name的type和value
winreg.QueryValue(key,sub_key) 获取相应subkey的默认name的数据data
winreg.QueryValueEx(key,value_name) 获取key中相应name的type和data,返回值是个元组tuple.
最后就是对句柄的关闭 _winreg.CloseKey()
简单例子如下:
- import _winreg
- handler=winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,'SOFTWARE\Classes')
- key= winreg.EnumKey(handler,1)
- key=winreg.OpenKey(handler,str(key))
- val= winreg.EnumValue(key,1)
- print (val)