Моя цель - найти значение ключа компании в кусте реестра, а затем извлечь соответствующий Guid и другие ключи и значения, следующие за ним. Итак, я решил запустить команду экспорта regedit, а затем проанализировать файл с помощью php и найти нужные мне ключи.
Итак, после запуска пакетной команды dos
>regedit /E "output.txt" "HKLM\System....\Company1"
Выходной текстовый файл, похоже, находится в каком-то формате UNICODE, который не поддерживает регулярные выражения. Я использую php, чтобы разобрать файл и потянуть ключи.
Вот код php, который я использую для разбора файла
<?php
$regfile = "output.txt";
$handle = fopen ("c:\\\\" . $regfile,"r");
//echo "handle: " . $file . "<br>";
$row = 1;
while ((($data = fgets($handle, 1024)) !== FALSE) ) {
$num = count($data);
echo "$num fields in line $row: \n";
$reg_section = $data;
//$reg_section = "[HKEY_LOCAL_MACHINE\SOFTWARE\TECHNOLOGIES\MEDIUS\CONFIG MANAGER\SYSTEM\COMPANIES\RECORD11]";
$pattern = "/^(\[HKEY_LOCAL_MACHINE\\\SOFTWARE\\\TECHNOLOGIES\\\MEDIUS\\\CONFIG MANAGER\\\SYSTEM\\\COMPANIES\\\RECORD(\d+)\])$/";
if ( preg_match($pattern, $reg_section )) {
echo "<font color=red>Found</font><br>";
} else {
echo "not found<br>";
echo $data . "<br>";
}
$row++;
} //end while
fclose($handle);
?>
и вывод выглядит так ...
1 поле в строке 1: не найдено
ÿþW i n d o w s R e g i s t r y
E d i t o r V e r s i o n
5 . 0 0 1 поля в строке 2: не
найден
1 поле в строке 3: не найдено
[HKEY LOCAL MACHINE \ SOF TWARE \ INTERSTAR
ТЕХНОЛОГИИ \ XMEDIUS \ CONF И.Г.
МЕНЕДЖЕР \ SYSTEM \ Фирмы]
1 поле в строке 4: не найдено
" N e x t R e c o r d
I D " = " 4 1 " 1 полей в строке
5: не найдено
Есть идеи, как к этому подойти?
заранее спасибо