python判断注册表中某键是否存在
百度搜索了一下居然没有,Google我还没有搜索,大多数的人还是用的百度,看来还得由我来填充这段空白了哦,本来想偷懒用已经有的方法来的,看来要自己写了!!!
!
实现先讲一下我想要判断键是否存在的目的吧
在做桌面应用开发的时候难免有的程序想要开机自启动,或者高级的让用户来选择是否开机自启,由此判断注册表中的键是否存在有变得很重要了
# -*- coding: utf-8 -*-
__author__ = 'apsinc'
import win32con,winreg
try:
reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run" # 键的路径
key = winreg.OpenKey(win32con.HKEY_CURRENT_USER, reg_path, 0, win32con.KEY_ALL_ACCESS)
location, type = winreg.QueryValueEx(key, "auto_run")
print("auto_run存在",location, type)
if type == 1:
print("开")
except FileNotFoundError as e:
print("不存在")
except:
print("Error")
进入注册表的方法:windows键+R,输入regedit
注册表自启动的位置:计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
现在,我们先新增一个键
运行一下代码
删除键在测试一下
接下来将判断键是否存在封装一下方便下次有同样的需求时调用
"""判断键是否存在"""
def Judge_Key(key_name,
reg_root=win32con.HKEY_CURRENT_USER,#根节点 其中的值可以有:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG
reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",# 键的路径
):
"""
:param key_name: # 要查询的键名
:param reg_root: # 根节点
#win32con.HKEY_CURRENT_USER
#win32con.HKEY_CLASSES_ROOT
#win32con.HKEY_CURRENT_USER
#win32con.HKEY_LOCAL_MACHINE
#win32con.HKEY_USERS
#win32con.HKEY_CURRENT_CONFIG
:param reg_path: # 键的路径
:return:feedback是(0/1/2/3:存在/不存在/权限不足/报错)
"""
reg_flags = win32con.WRITE_OWNER | win32con.KEY_WOW64_64KEY | win32con.KEY_ALL_ACCESS
try:
key = winreg.OpenKey(reg_root, reg_path, 0, reg_flags)
location, type = winreg.QueryValueEx(key, key_name)
print("键存在", "location(数据):", location, "type:", type)
feedback=0
except FileNotFoundError as e:
print("键不存在",e)
feedback =1
except PermissionError as e:
print("权限不足",e)
feedback = 2
except:
print("Error")
feedback = 3
return feedback