diff --git a/samples/registry.py b/samples/registry.py index 4a3608a..87688b1 100644 --- a/samples/registry.py +++ b/samples/registry.py @@ -8,21 +8,21 @@ import windows registry = windows.system.registry print("Registry is <{0}>".format(registry)) -current_user = registry["HKEY_CURRENT_USER"] +current_user = registry("HKEY_CURRENT_USER") print("HKEY_CURRENT_USER is <{0}>".format(current_user)) subkeys_name = [s.name for s in current_user.subkeys] print("HKEY_CURRENT_USER subkeys names are:") pprint.pprint(subkeys_name) -print("Opening 'Software' in HKEY_CURRENT_USER: {0}".format(current_user["Software"])) -print("We can also open it in one access: {0}".format(registry[r"HKEY_CURRENT_USER\Sofware"])) +print("Opening 'Software' in HKEY_CURRENT_USER: {0}".format(current_user("Software"))) +print("We can also open it in one access: {0}".format(registry(r"HKEY_CURRENT_USER\Sofware"))) print("Looking at CurrentVersion") -windows_info = registry["HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"] +windows_info = registry("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion") print("Key is {0}".format(windows_info)) print("values are:") pprint.pprint(windows_info.values) -registered_owner = windows_info.get("RegisteredOwner") +registered_owner = windows_info["RegisteredOwner"] print("registered owner = <{0}>".format(registered_owner)) \ No newline at end of file diff --git a/windows/winobject/registry.py b/windows/winobject/registry.py index 53a3411..1dbb567 100644 --- a/windows/winobject/registry.py +++ b/windows/winobject/registry.py @@ -68,6 +68,14 @@ class PyHKey(object): res.append(_winreg.EnumValue(self.phkey, i)) return [KeyValue(*r) for r in res] + @property + def info(self): + return _winreg.QueryInfoKey(self.phkey) + + @property + def last_write(self): + return self.info[2] + def get(self, value_name): """Retrieves the value ``value_name`` @@ -150,7 +158,10 @@ class Registry(object): """ if name in self.registry_base_keys: - return self.registry_base_keys[name] + key = self.registry_base_keys[name] + if sam != key.sam: + key = key.reopen(sam) + return key if "\\" not in name: raise ValueError("Unknow registry base key <{0}>".format(name)) base_name, subkey = name.split("\\", 1)