Beispiel #1
0
 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);