python3操作注册表的方法(Url protocol)

时间:2021-05-22

使用python操作注册表的方法最近学习了一下,现在做一下笔记,由于对Python语言的使用还不是很熟练,所以写不出高大上的结构,但是解决问题搓搓有余了。

说道注册表顺便也说一说环境变量的修改(放下下一节讲),里面有许多相似的地方,我觉得放在一起说会比较合适。

操作注册表

操作注册表主要引入winreg包,winreg包是python3自带的包,python2的名字和python3有区别_winreg,在这里只关注python3

key = winreg.OpenKeyEx(winreg.HKEY_CLASSES_ROOT, r"路径的名字")

OpenKeyEx打开一个注册表,路径不写就是根目录,给个图大家就明白了

点击确定打开windows注册表

上面写的winreg.HKEY_CLASSES_ROOT,就是上图中其中之一,想要打开哪个就写哪个的名字 •新建一个分支

newKey = winreg.CreateKey(key,"文件名")

•获取当前名称对应的值

winreg.QueryValueEx(key, '名称')

例如:winreg.QueryValueEx(key, 'PATH')

•设置当前目录下的值

winreg.SetValueEx(key,"名称",0,winreg.REG_EXPAND_SZ, "值")

例子:

key = winreg.OpenKeyEx(winreg.HKEY_CLASSES_ROOT, r"") #创建新的键 newKey = winreg.CreateKey(key,"aTest") #给新创建的键添加键值 winreg.SetValueEx(newKey,"a1",0,winreg.REG_EXPAND_SZ,"aaa") winreg.SetValueEx(newKey,"b1","star",1, "bbb") #创建新的子键 key = winreg.OpenKeyEx(winreg.HKEY_CLASSES_ROOT, r"aTest") newKey = winreg.CreateKey(key,"DefaultIcon") winreg.SetValueEx(newKey,"",0,winreg.REG_EXPAND_SZ, "path ,1") newKey = winreg.CreateKey(key,"shell") key = winreg.OpenKeyEx(winreg.HKEY_CLASSES_ROOT, r"aTest\shell") newKey = winreg.CreateKey(key,"open") key = winreg.OpenKeyEx(winreg.HKEY_CLASSES_ROOT, r"aTest\shell\open") newKey = winreg.CreateKey(key,"command") winreg.SetValueEx(newKey,"url",0,winreg.REG_EXPAND_SZ, "\"path\" \"%1\"")

以上例子可以使用Url protocol,使用浏览器启动本地exe。直接将上文中的path换成本地exe的路径就可以了。

Python 操作注册表

通过Python的内置模块winreg这里主要给出一些winreg的Demo代码

Python2:import _winreg、Python3:import winreg

#!python37# -*- coding: utf-8 -*-# coding:utf-8import winregdef obtain(): # 获取该键的所有键值 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\\Inspiry\\BasePay\\Address") # 获取该键的所有键值,遍历枚举 try: i = 0 while 1: # EnumKey用来枚举子键,EnumValue方法用来枚举键值, name, value, type1 = winreg.EnumValue(key, i) # print(repr(name),value) return value i +=1 except WindowsError: print('error')if __name__ == '__main__': obtain()

好了这篇文章就介绍到这了,希望以后多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章