2017-12-21 13 views
0

私は、マルチストリングレジストリ値を操作するためのラッパークラスを作成しました。クラスは完全ではなく、アイテムが既にレジストリに存在するとみなされます。WindowsレジストリREG_Multi_SZで値/文字列を検索するにはどうすればよいですか?

問題は、私がReg_Multi_SZ項目のwinregから取得した値の中の文字列を検索できないということです。

は、私はこのエラーを取得enter image description here

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文はタプル内でリストを返送する必要があります。

+0

おそらく 'もしhidが値にないならば:'を '値にない:'に変更したいと思います。 'is'の必要はありませんが、それは英語で意味をなさないかもしれませんが、それは[pythonで何かします。](https://stackoverflow.com/questions/132988/is-there-a-difference-between-and- is-in-python) – roganjosh

+0

私はそれを試して誓ったことがあります。あなたの答えを修正していただきありがとうございます! –

答えて

0

hidが値にない場合は 'is'を削除する必要がありました: '

ありがとうroganjosh!

関連する問題