您的位置:首页 > 其它

操作注册表方法及应用

2016-03-25 13:55 316 查看
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
#获取该键的所有键值,因为没有方法可以获取键值的个数,所以只能用这种方法进行遍历
try:
i=0
while True:
#EnumValue方法用来枚举键值,EnumKey用来枚举子键
content = _winreg.EnumValue(key,i)
i += 1
print content
except WindowsError:
pass

# 如果知道键的名称,也可以直接取值
value = _winreg.QueryValueEx(key,"ABC")
print value

#创建新的键
newkey = _winreg.CreateKey(key,"hello")

#给新创建的键添加页键值
_winreg.SetValueEx(newkey,"HelloNewKey",0,_winreg.REG_SZ,'this is new key content')




#将此脚本添加到注册表启动项
p = "C:\Users\Administrator\Desktop\main.py"
#在启动项中添加程序启动键值对 以及 页值
path = 'python "%s"' % p
print path
env = _winreg.OpenKeyEx(_winreg.HKEY_LOCAL_MACHINE,
"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
0,
_winreg.KEY_SET_VALUE|_winreg.KEY_READ
)
print env

key = _winreg.EnumKey(env,0)#读取Run下面的第一个键
print key

value = _winreg.EnumValue(env,0)#枚举Run键 下面的第一个页值
print value
value = _winreg.EnumValue(env,1)#枚举Run键 下面的第二个页值
print value
value = _winreg.EnumValue(env,2)#枚举Run键 下面的第三个页值
print value
# value = _winreg.EnumValue(env,3)#枚举Run键 下面的第四个页值 不存在则报错
# print value

#遍历全部的页值如下
name_list = []
try:
i = 0
while True:
name,value,type = _winreg.EnumValue(env,i)#枚举键下的页值
name_list.append(name)
i += 1
print name
except WindowsError:
pass

print name_list
if "Agent" not in name_list:
_winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path)
else:
value = _winreg.QueryValueEx(env,"Agent")

#判断是不是存在此键以及键的内容是否符合正常的
if "Agent" not in name_list:
_winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path)

#获取子键的内容
value = _winreg.QueryValueEx(env,"Agent")
if value != path:
_winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) #如果存在此key 则会直接修改里面的value

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  注册表