_winreg模块记录

_winreg模块记录
python版本2.6
 
该模块用于在windows下对注册表进行一系列的操作
windows下打开注册表命令regedit
 
如此,我们不难发觉,注册表是一个树结构的数据对象
 
首先,我们对注册表进行操作前,得需要获得具体的句柄,这就与OpenKey()函数有关了:
_winreg. OpenKey ( key,   sub_key[,   res[,   sam]] )

Opens the specified key, returning a handle object.

key is an already open key, or any one of the predefined HKEY_* constants.

sub_key is a string that identifies the sub_key to open.

res is a reserved integer, and must be zero. The default is zero.

sam is an integer that specifies an access mask that describes the desired security access for the key. Default is KEY_READ. See Access Rights for other allowed values.

The result is a new handle to the specified key.

If the function fails, WindowsError is raised.

  该函数包括两个必要参数和两个可选参数: key是一个已经打开的key,或者是注册表常量中的某一个值 sub_key是一个字符串,比如上图所示,_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"SOFTWARE") 即可获得一个指 HKEY_LOCAL_MACHINE下的“SOFTWARE”对象的句柄 res是一个保留的整型数据,必须是0,且默认是0 sam是一个用来指明句柄对该key的访问权限的整型数据,默认是KEY_READ,要进行写操作时需要 KEY_WRITE或者KEY_ALL_ACCESS权限     获取了句柄之后,接下来的操作基本是增删改查:
_winreg.CreateKey(key,sub_key)
该函数用于在key下创建一个subkey,返回类型为一个指向subkey的操作句柄
_winreg.DeleteKey(key,sub_key)
该函数用于删除key下的指定subkey
  
_winreg.QueryInfoKey(key) 该函数用于获取key的相关信息,返回类型为tuple 分别为subkeys的个数、values的个数依旧修改时间

 

The result is a tuple of 3 items:

IndexMeaning
0An integer giving the number of sub keys this key has.
1An integer giving the number of values this key has.
2A long integer giving when the key was last modified (if available) as 100’s of nanoseconds since Jan 1, 1600.
 
_winreg.EnumKey(key,index)
该函数用于枚举获取key下的subkey,返回类型为handle(操作句柄),与
    _winreg.QueryInfoKey(key)一起使用,即可实现对subkey的遍历
     
_winreg.CloseKey(hkey) 该函数用于关闭指向key的句柄

 

      如下图所示,创建一个指向"7-Zip"的句柄后,右侧窗口中显示的就是values,每个value包括了name、type、data三部分  
_winreg.SetValue(key,sub_key,type,value)
该函数用于设置subkey的未命名value的data,也就是上图所示中"(默认)"对应的"数值未设置",若subkey不存在则自动创建subkey

_winreg.SetValueEx(key,value_name,reserved,type,value) 该函数用于设置key中对应value_name的type和value

_winreg.EnumValue(key,index) 该函数用于枚举获取key下的values,返回类型为tuple,与_winreg.QueryInfoKey(key)一起使用即可实现对values的遍历
_winreg.QueryValue(key,sub_key) 该函数用于获取未命名的value的data,也就是上图所示中
"(默认)"对应的"数值未设置"
_winreg.QueryValueEx(key,value_name) 该函数用于获取某个key中指定value的data和type,返回类型是tuple

IndexMeaning
0The value of the registry item.
1An integer giving the registry type for this value (see table in docs for SetValueEx())
_winreg.DeleteValue(key,value)
该函数用于删除key下的指定value

 

    以下demo为遍历key下的所有subkey及其velues
def registrytest(keypath):
    try:
        key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, keypath, 0, _winreg.KEY_ALL_ACCESS)
        i = _winreg.QueryInfoKey(key)[ 0]
        for j in range( 0, i):
            subkey_name = _winreg.EnumKey(key, j)
            print subkey_name
            subkey = _winreg.OpenKey(key, subkey_name)
            try:
                m = _winreg.QueryInfoKey(subkey)[1 ]
                print m
                for n in range( 0, m):
                    print _winreg.EnumValue(subkey, n)
                displayname,d1 = _winreg.QueryValueEx(subkey, u"DisplayName" )
                print displayname,d1
            except Exception:
                print "exception"
            _winreg.CloseKey(subkey)
    except WindowsError:
        print "exception"
    finally:
        _winreg.CloseKey(key)
pass
 
if __name__ == "__main__": print registrytest("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\ Uninstall")

转载于:https://www.cnblogs.com/mitingmai/p/3400054.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值