我的目标是在注册表配置单元中查找 Company 键值,然后在其后面提取相应的 Guid 和其他键和值。所以我想我会运行 regedit export 命令,然后用 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 个字段:未找到r� �V�e�r�s�o�n� �5�.�0�0� 第 2 行中的 1 个字段:未找到
第 3 行中的 1 个字段:未找到 [.H.K.E.Y.<em>.L.O.C.A.L.</em>.M.A.C.H.I.N.E @S.O.F.T.W.A.R.E.\.I.T.E.R.S.T.A.R..T.E.C.H.N. O.L.O.G.I.E.S.\.X.M.E.D.I.U.S.\.C.O.N.F.I.G..M.A.N ‘A.G.E.R.\.S.Y.S.T.E.M.\.C.O.M.P.A.N.I.E.S.]. 1 个字段在行4: 在第 5 行中未找到“.N.e.x.t..R.e.c.o.r.d..I.D.”.=.".4.1.". 1 个字段: 未找到
任何想法如何解决这个问题?
提前致谢