私は、マルチストリングレジストリ値を操作するためのラッパークラスを作成しました。クラスは完全ではなく、アイテムが既にレジストリに存在するとみなされます。WindowsレジストリREG_Multi_SZで値/文字列を検索するにはどうすればよいですか?
問題は、私がReg_Multi_SZ項目のwinregから取得した値の中の文字列を検索できないということです。
pylintそれはE0001として記載されている:無効な構文(文字列、行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を返すコードです['item 1'、 'item 2'、 'item 3']のようなリストで、add_devices関数で何をしたいのかは、文字列(hid)がすでにリストに入っているかどうかを調べるテストです。そうでない場合は、リストに追加し、新しいリストをレジストリに書き戻します。リストを書くことはうまくいくが、何らかの理由でリストを検索することができない。
また、list_devices()で明示するために、変数値はリスト(['item1'、 'item2']、7)を含むタプルであり、return文はタプル内でリストを返送する必要があります。
おそらく 'もしhidが値にないならば:'を '値にない:'に変更したいと思います。 'is'の必要はありませんが、それは英語で意味をなさないかもしれませんが、それは[pythonで何かします。](https://stackoverflow.com/questions/132988/is-there-a-difference-between-and- is-in-python) – roganjosh
私はそれを試して誓ったことがあります。あなたの答えを修正していただきありがとうございます! –