首页 > 解决方案 > 遍历存储在列表中的注册表项

问题描述

我有一些 Windows 注册表项存储在文件中的 python 列表中。键存储为完整路径,我只想通过一次循环遍历列表一个元素来确保它们存在。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\\AppInit_DLLs

以上是我正在检查是否存在的键和我的keys.txt文件的内容。

keysFile = 'keys.txt'
with open(keysFile) as f:
    keys = f.readlines()
keys = [x.strip() for x in keys]

上面的代码用于打开带有路径的文件,并将每一行存储为列表的一个元素。我只是迷失了如何使用这些路径来检查它们是否存在。我已经看到winreg被使用,但我不确定这是否适用于此,因为这些是完整路径。我将就如何应对这种情况采取任何指导。我对 python 和注册表都是新手,所以请耐心等待。太感谢了。

标签: pythonregedit

解决方案


我不知道用于处理注册表的 python 模块(尽管它们可能存在)。我个人会在使用这个维基百科页面时混合使用字符串格式和os模块来解决这个问题。我认为它看起来像:

import os
for key in keys: # you made this list already
    command = "Reg.exe QUERY {}".format(key) # apply string formatting to replace the {}
    os.system(command) # call our command on the command line

可能有很多关于注册表脚本的知识,但是一旦您找到了您想要的命令,您只需将它们替换掉!希望这足以让您入门,欢迎来到 StackOverflow XD!


推荐阅读