2009年1月8日星期四

答复: [PerlChina] Re: Win32::TieRegistry

Joe jiang 的回答是没有问题的。

我想你遇到的问题应该是对于注册表层次结构的理解:
假设在注册表的一个项下,有子项1,子项2,... ,值1,值2,..
在这里"子项1,子项2,... ,值1,值2,.."是同一级的,而注册表值对应
的数据则属于下一级。
了解这点之后,回到你的例子:
Print $sub_key->{"360Safebox"} 实际上是以注册表值"360Safebox"为
key,取HASH中的value

因此,如果想取同时取到子键,值和数据,只需做一个简单的模式匹配来区分
子项和注册表值即可。另外,要遍历一个注册表项下的所有信息,可以写一个简单的递
归来实现。


Best regards

Henry Li


-----邮件原件-----
发件人: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] 代表
shandaw
发送时间: 2009年1月9日 10:06
收件人: PerlChina 论坛
主题: [PerlChina] Re: Win32::TieRegistry


可能是我没表达清楚,我说的值不是hash表里的value,我是说注册表的值(注册表
有:项,值,数据。三种类型),比如:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
\360Safebox,这个值的value可能等于"C:\Program
Files\360Safebox\safeboxTray.exe".
如果我的$sub_key=$Registry->Open("\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
\Windows\CurrentVersion\Run\"),那我
foreach my $key ( keys %{$sub_key})
{
print "\n$key";

}

结果只显示Run下面的子项,却没有360Safebox等值,但我如果print
$sub_key->{"360Safebox"},却又能显
示"C:\Program Files\360Safebox\safeboxTray.exe".



--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: