找回密码
 立即注册
首页 业界区 业界 使用python读取windows日志表

使用python读取windows日志表

党新苗 2025-9-22 21:09:28
在windows系统中,注册表 是系统定义的数据库,应用程序和系统组件在其中存储和检索配置数据。
注册表是一个分层数据库,其中包含对 Windows本身以及Windows上运行的应用程序和服务至关重要的数据。 因此我们还是不好进行随意操作,但是查看注册表的信息可以让我们更加了解系统的运行情况。
数据以树格式进行结构化。树中的每个节点称为键。每个键可以同时包含子项和数据条目,称为值。
通过查看注册表的数据我们可以发现一些比较有趣的系统信息。比如我们可以通过注册表看到用户定义的环境变量,
1.jpeg

也可以查看菜单在文件夹空白处右键的菜单操作。
2.jpeg

以下是使用python3对注册表进行读取的代码。
  1. import winreg
  2. def enumerate_registry_values(key, sub_key):
  3.     """
  4.     枚举注册表键中的所有值
  5.     :param key_path: 注册表键路径
  6.     """
  7.     # key  可以是一个打开的key,或者winreg预定义的值HKEY_* constants
  8.     try:
  9.         reg_key = winreg.OpenKey(key, sub_key, 0, winreg.KEY_READ)
  10.     except OSError:
  11.         print(f"can't open key {key}/{sub_key}")
  12.         return
  13.     values = []
  14.     index = 0
  15.     while True:
  16.         try:
  17.             # 枚举值
  18.             value_name, value_data, value_type = winreg.EnumValue(reg_key, index)
  19.             values.append((value_name, value_data, value_type))
  20.             index += 1
  21.         except OSError:
  22.             # 当没有更多值时跳出循环
  23.             break
  24.     winreg.CloseKey(key)
  25.     print(f"枚举值成功 - 路径: {key}{sub_key}, 值数量: {len(values)}")
  26.     for name, data, type_ in values:
  27.         print(f"  名称: {name}, 值: {data}, 类型: {type_}")
  28. print("基于注册表查看用户环境变量")
  29. # 查看用户定义的环境变量路径是:HKEY_CURRENT_USER\Environment
  30. enumerate_registry_values(winreg.HKEY_CURRENT_USER,"Environment")
  31. def get_children_key_names(key, sub_key):
  32.     """
  33.     获取key的子节点的key
  34.     并且以数组返回
  35.     """
  36.     # key  可以是一个打开的key,或者winreg预定义的值HKEY_* constants
  37.     reg_key = winreg.OpenKey(key, sub_key, 0, winreg.KEY_READ)
  38.     sub_key_names = []
  39.     index = 0
  40.     while True:
  41.         try:
  42.             # 枚举值
  43.             sub_key_name = winreg.EnumKey(reg_key, index)
  44.             sub_key_names.append(sub_key_name)
  45.             index += 1
  46.         except OSError:
  47.             # 当没有更多值时跳出循环
  48.             break
  49.     winreg.CloseKey(key)
  50.     return sub_key_names
  51. print("基于注册表查看对文件夹右键菜单的操作")
  52. # 遍历路径:\HKEY_CLASSES_ROOT\Directory\Background\shell,查看针对文件夹中空白处右键菜单的操作
  53. sub_key_names=get_children_key_names(winreg.HKEY_CLASSES_ROOT,r"Directory\Background\shell")
  54. for sub_key_name in sub_key_names:
  55.     # 菜单的操作在command的值中
  56.     enumerate_registry_values(winreg.HKEY_CLASSES_ROOT,r'Directory\Background\shell\\'+""+sub_key_name+r"\command")
复制代码
输出如下:
3.jpeg


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册