如何在 Windows 注册表 REG_Multi_SZ 中搜索 value/string?
How do I search for value/string in Windows Registry REG_Multi_SZ?
我创建了一个包装器 class 来处理多字符串注册表值。 class 不完整,它假定该项目已存在于注册表中。
我遇到的问题是我无法在从 winreg 返回的 Reg_Multi_SZ 项的值中搜索字符串。
我收到这个错误
pylint 将其列为 E0001:invalid syntax (string, line 33) (33, 1)
这是代码
class AffectedDevices(object):
path = r'SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters'
name = "test"
def list_devices(self):
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, self.path, 0, winreg.KEY_READ)
values = winreg.QueryValueEx(key, self.name)
winreg.CloseKey(key)
return values[0]
def clear_devices(self):
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, self.path, 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, self.name, 0, winreg.REG_MULTI_SZ, [])
winreg.CloseKey(key)
def add_device(self, hid):
values = self.list_devices()
if hid is not in values:
values.append(hid)
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, self.path, 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, self.name, 0, winreg.REG_MULTI_SZ, values)
winreg.CloseKey(key)
list_devices returns 是一个如下所示的列表:['item 1'、'item 2'、'item 3'] 以及我想在 add_devices 函数用于测试字符串 (hid) 是否已在列表中。如果不是,则将其添加到列表并将新列表写回注册表。写一个列表可以正常工作,但由于某种原因我无法搜索列表。
还要在 list_devices() 中说明变量值是一个包含列表 (['item1', 'item2'], 7) 和 return 的元组语句应该发回元组内的列表。
必须删除 'if hid is not in values:' 中的 'is'。
谢谢 roganjosh!
我创建了一个包装器 class 来处理多字符串注册表值。 class 不完整,它假定该项目已存在于注册表中。
我遇到的问题是我无法在从 winreg 返回的 Reg_Multi_SZ 项的值中搜索字符串。
我收到这个错误
pylint 将其列为 E0001:invalid syntax (string, line 33) (33, 1)
这是代码
class AffectedDevices(object):
path = r'SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters'
name = "test"
def list_devices(self):
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, self.path, 0, winreg.KEY_READ)
values = winreg.QueryValueEx(key, self.name)
winreg.CloseKey(key)
return values[0]
def clear_devices(self):
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, self.path, 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, self.name, 0, winreg.REG_MULTI_SZ, [])
winreg.CloseKey(key)
def add_device(self, hid):
values = self.list_devices()
if hid is not in values:
values.append(hid)
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, self.path, 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, self.name, 0, winreg.REG_MULTI_SZ, values)
winreg.CloseKey(key)
list_devices returns 是一个如下所示的列表:['item 1'、'item 2'、'item 3'] 以及我想在 add_devices 函数用于测试字符串 (hid) 是否已在列表中。如果不是,则将其添加到列表并将新列表写回注册表。写一个列表可以正常工作,但由于某种原因我无法搜索列表。
还要在 list_devices() 中说明变量值是一个包含列表 (['item1', 'item2'], 7) 和 return 的元组语句应该发回元组内的列表。
必须删除 'if hid is not in values:' 中的 'is'。
谢谢 roganjosh!