perl - 使用 Perl 解析 Windows 注册表

标签 perl registry

我正在编写一个 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 行

通过解决方案向我提供它。提前致谢。

最佳答案

我认为这是因为如果您使用的是 Win 7Win Vista 等平台,那么在运行 perl 脚本时您没有获得管理员权限。

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

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

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

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

关于perl - 使用 Perl 解析 Windows 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023504/

相关文章:

xml - 配置 Perl 脚本为超大网站自动生成 XML 站点地图

perl - perldoc perlxxx 选项是什么?

batch-file - 批处理文件运行目录中的每个 .REG 文件

c++ - 从 C++ 中的 HKEY 句柄确定注册表项的路径

c# - 访问注册表似乎来自不同的来源

winapi - 枚举子项中的所有值

regex - Instr 等效于 perl?

perl - perl 中的@$ 是什么?

node.js - 如何通过driver获取Mongodb中的连接

Windows 注册表配置单元文件文档