class Rex::Post::Meterpreter::Extensions::Stdapi::Sys::RegistrySubsystem::RegistryKey
Class wrapper around a logical registry key on the remote side
Attributes
The base key name, such as SoftwareFoo.
The open handle to the key on the server.
The permissions that the key was opened with.
The root key name, such as HKEY_LOCAL_MACHINE.
Public Class Methods
Closes the open key. This must be called if the registry key was opened.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 107 def self.close(client, hkey) if hkey != nil return client.sys.registry.close_key(hkey) end return false end
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 35 def self.finalize(client,hkey) proc { self.close(client,hkey) } end
Initializes an instance of a registry key using the supplied properties and HKEY handle from the server.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 25 def initialize(client, root_key, base_key, perm, hkey) self.client = client self.root_key = root_key self.base_key = base_key self.perm = perm self.hkey = hkey ObjectSpace.define_finalizer( self, self.class.finalize(self.client, self.hkey) ) end
Public Instance Methods
Instance method for the same
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 116 def close() self.class.close(self.client, self.hkey) end
Creates a registry key that is relative to this registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 92 def create_key(base_key, perm = KEY_READ) return self.client.sys.registry.create_key(self.hkey, base_key, perm) end
Deletes a registry key that is relative to this registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 99 def delete_key(base_key, recursive = true) return self.client.sys.registry.delete_key(self.hkey, base_key, recursive) end
Delete the supplied registry value.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 151 def delete_value(name) return self.client.sys.registry.delete_value(self.hkey, name) end
Enumerates all of the child keys within this registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 48 def each_key(&block) return enum_key.each(&block) end
Enumerates all of the child values within this registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 55 def each_value(&block) return enum_value.each(&block) end
Retrieves all of the registry keys that are direct descendents of the class’ registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 63 def enum_key() return self.client.sys.registry.enum_key(self.hkey) end
Retrieves all of the registry values that exist within the opened registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 71 def enum_value() return self.client.sys.registry.enum_value(self.hkey) end
Opens a registry key that is relative to this registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 85 def open_key(base_key, perm = KEY_READ) return self.client.sys.registry.open_key(self.hkey, base_key, perm) end
Queries the class of the specified key
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 144 def query_class return self.client.sys.registry.query_class(self.hkey) end
Queries the attributes of the supplied registry value relative to the opened registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 137 def query_value(name) return self.client.sys.registry.query_value(self.hkey, name) end
Sets a value relative to the opened registry key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 129 def set_value(name, type, data) return self.client.sys.registry.set_value(self.hkey, name, type, data) end
Returns the path to the key.
# File lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb, line 164 def to_s return self.root_key.to_s + "\\" + self.base_key end