function value($key) { return reg_get_value($this->r, $key); }
function stdapi_registry_query_value($req, &$pkt) { if (is_windows() and is_callable('reg_open_key')) { global $registry_handles; my_print("doing stdapi_registry_query_value"); $key_id_tlv = packet_get_tlv($req, TLV_TYPE_HKEY); $key_id = $key_id_tlv['value']; $name_tlv = packet_get_tlv($req, TLV_TYPE_VALUE_NAME); $name = $name_tlv['value']; #my_print("Looking up stored key handle $key_id"); #dump_array($registry_handles, "Reg handles"); $key = $registry_handles[$key_id]; if (!$key) { return ERROR_FAILURE; } $data = reg_get_value($key, $name); my_print("Found data for {$key}\\{$name} : {$data}, " . is_int($data)); # There doesn't appear to be an API to get the type, all we can do is # infer based on what the value looks like. =( if (is_int($data)) { $type = REG_DWORD; $data = pack("N", (int) $data); } else { $type = REG_SZ; # The api strips the null for us, so put it back $data = $data . ""; } packet_add_tlv($pkt, create_tlv(TLV_TYPE_VALUE_DATA, $data)); packet_add_tlv($pkt, create_tlv(TLV_TYPE_VALUE_TYPE, $type)); } else { return ERROR_FAILURE; } }
} /* Reg exemple */ $strMainKey = 'Control Panel'; $mainKey = reg_open_key(HKEY_CURRENT_USER, $strMainKey); if (!$mainKey) { err("Can't open '{$strMainKey}' !"); } echo "'{$strMainKey}' Key opened\n\nKeys:\n"; print_r(reg_enum_key($mainKey)); for ($i = 0; $key = reg_enum_key($mainKey, $i); $i++) { echo "\t{$key}\n"; } echo "\nValues:\n"; print_r(reg_enum_value($mainKey)); for ($i = 0; $value = reg_enum_value($mainKey, $i); $i++) { echo "\t{$value}=" . reg_get_value($mainKey, $value) . "\n"; } reg_close_key($mainKey); /* Res exemple */ $file = realpath('test_resourceDll.dll'); if (empty($file)) { err('The res exemple need a file !'); } res_set($file, 'A_TYPE', 'A_RC_NAME', 'The time: ' . date('d-m-Y h:i')); echo "Res Stream read: " . file_get_contents('res://' . $file . '/A_TYPE/A_RC_NAME') . "\n\n"; $h = res_open($file); if (!$h) { err("can't open " . $file); } echo "Res list of '{$file}': \n"; $list = res_list_type($h, true);