如何在 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!