1 # Written by ABC authors and Arno Bakker
2 # see LICENSE.txt for license information
6 from traceback import print_exc
8 if (sys.platform == 'win32'):
11 # short for PyHKEY from "_winreg" module
12 HKCR = _winreg.HKEY_CLASSES_ROOT
13 HKLM = _winreg.HKEY_LOCAL_MACHINE
14 HKCU = _winreg.HKEY_CURRENT_USER
22 class Win32RegChecker:
26 def readRootKey(self,key_name,value_name=""):
27 return self.readKey(HKCR,key_name,value_name)
29 def readKey(self,hkey,key_name,value_name=""):
30 if (sys.platform != 'win32'):
34 # test that shell/open association with ABC exist
36 print >>sys.stderr,"win32regcheck: Opening",key_name,value_name
37 full_key = _winreg.OpenKey(hkey, key_name, 0, _winreg.KEY_READ)
40 print >>sys.stderr,"win32regcheck: Open returned",full_key
42 value_data, value_type = _winreg.QueryValueEx(full_key, value_name)
44 print >>sys.stderr,"win32regcheck: Read",value_data,value_type
45 _winreg.CloseKey(full_key)
49 print_exc(file=sys.stderr)
50 # error, test failed, key don't exist
51 # (could also indicate a unicode error)
55 def readKeyRecursively(self,hkey,key_name,value_name=""):
56 if (sys.platform != 'win32'):
62 keyparts = key_name.split('\\')
63 print >>sys.stderr,"win32regcheck: keyparts",keyparts
64 for keypart in keyparts:
68 print >>sys.stderr,"win32regcheck: Opening",keypart
69 full_key = _winreg.OpenKey(lasthkey, keypart, 0, _winreg.KEY_READ)
71 toclose.append(full_key)
74 print >>sys.stderr,"win32regcheck: Open returned",full_key
76 value_data, value_type = _winreg.QueryValueEx(full_key, value_name)
78 print >>sys.stderr,"win32regcheck: Read",value_data,value_type
80 _winreg.CloseKey(hkey)
85 # error, test failed, key don't exist
86 # (could also indicate a unicode error)
90 def writeKey(self,hkey,key_name,value_name,value_data,value_type):
92 # kreate desired key in Windows register
93 full_key = _winreg.CreateKey(hkey, key_name)
94 except EnvironmentError:
96 # set desired value in created Windows register key
97 _winreg.SetValueEx(full_key, value_name, 0, value_type, value_data)
98 # close Windows register key
99 _winreg.CloseKey(full_key)
105 if __name__ == "__main__":
106 w = Win32RegChecker()
107 winfiletype = w.readRootKey(".wmv")
108 playkey = winfiletype+"\shell\play\command"
109 urlplay = w.readRootKey(playkey)
111 openkey = winfiletype+"\shell\open\command"
112 urlopen = w.readRootKey(openkey)