def get_reg_value(hkey, subkey, name):
     value = None
     registry_key = RegistryHelper.get_key(hkey, subkey, KEY_READ, False)
     if registry_key:
         try:
             if PlatformHelper.is_64bit_machine():
                 value, _ = win32api.RegQueryValueEx(registry_key, name)
             else:
                 value, _ = QueryValueEx(registry_key, name)
         except WindowsError as e:
             LogHelper.error(str(e))
             value = None
         finally:
             RegistryHelper.close_key(registry_key)
     return value
 def close_key(registry_key):
     closed = False
     if registry_key:
         try:
             if PlatformHelper.is_64bit_machine():
                 win32api.RegCloseKey(registry_key)
                 closed = True
             else:
                 CloseKey(registry_key)
                 closed = True
         except WindowsError as e:
             print str(e)
             LogHelper.error(str(e))
             closed = False
     return closed
 def set_reg_value(hkey, subkey, name, value, type):
     result = False
     registry_key = RegistryHelper.get_key(hkey, subkey, KEY_WRITE, True)
     if registry_key:
         try:
             if PlatformHelper.is_64bit_machine():
                 win32api.RegSetValueEx(registry_key, name, 0, type, value)
                 result = True
             else:
                 SetValueEx(registry_key, name, 0, type, value)
                 result = True
         except WindowsError as e:
             LogHelper.error(str(e))
             result = False
         finally:
             RegistryHelper.close_key(registry_key)
     return result
 def delete_key(hkey, subkey, name):
     result = None
     registry_key = RegistryHelper.get_key(hkey, subkey, KEY_READ, False)
     print registry_key
     if registry_key:
         try:
             if PlatformHelper.is_64bit_machine():
                 result = win32api.RegDeleteKey(registry_key, name)
             else:
                 result = DeleteKey(registry_key, name)
             print result
         except WindowsError as e:
             print str(e)
             LogHelper.error(str(e))
             result = None
         finally:
             RegistryHelper.close_key(registry_key)
     return result
 def get_key(hkey, subkey, access, is_existed=True):
     registry_key = None
     try:
         if PlatformHelper.is_64bit_machine():
             registry_key = win32api.RegOpenKeyEx(
                 hkey, subkey, 0, win32con.WRITE_OWNER
                 | win32con.KEY_WOW64_64KEY | win32con.KEY_ALL_ACCESS)
         else:
             registry_key = OpenKey(hkey, subkey, 0, access)
     except WindowsError:
         try:
             if is_existed:
                 registry_key = CreateKey(hkey, subkey)
             else:
                 registry_key = None
         except WindowsError as e:
             LogHelper.error(str(e))
             if registry_key:
                 RegistryHelper.close_key(registry_key)
             raise Exception('Fail to get Registry key.')
     return registry_key