3

我正在编写一个 perl 脚本来访问 Windows 注册表树结构中的值。

我正在使用以下简单脚本

use Win32::TieRegistry;
my $mykey = $Registry->{'HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/BIOS/'};
my $mykeyval = $mykey->{'/SystemVersion'};

print " value  $mykeyval";
exit;    

但我无法获得内容或价值

用法:Win32API::Registry::regConstant("CONST_NAME") 在 C:/Dwimperl/perl/vendor/lib/Win32/TieRegistry.pm 第 292 行

为我提供解决方案。谢谢你的建议。

4

2 回答 2

4

我认为这是因为在运行 perl 脚本时您没有获得管理员权限,如果您在某个平台上,例如Win 7Win Vista.

某些字段的注册表键值,例如 下的字段,HKEY_LOCAL_MACHINE普通用户无法访问。您可以尝试以管理员身份运行脚本并观察结果。

此外,Win32::TieRegistry 的默认分隔符是\\. 所以如果你想/用作分隔符,你应该像这样导入模块:

use Win32::TieRegistry (Delimiter => '/');

注意,即使你的代码是正确的,如果你的代码是SystemVersion空白的,或者你的注册表中没有这样的键,仍然可能没有输出。所以也用Data::Dumper打印mykey来检查它。

于 2013-09-26T09:17:53.020 回答
-1

我没有 Win 机器,所以我无法尝试,但是您使用以下脚本看到的内容:

use strict;
use warnings;
use Data::Dumper;
use Win32::TieRegistry;
my $mykey = $Registry->{'HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/BIOS/'};

print Dumper $mykey;
于 2013-09-26T09:10:29.140 回答