문제

Cygwin Perl v5.8.8 및 win32 :: tieregistry 0.26 사용.

HKEY_CURRENT_USER에 대한 묶인 해시 객체를 얻을 수 있습니다.

$ perl -e '
my %RegHash;
use Win32::TieRegistry( TiedHash => \%RegHash );
use Data::Dumper;
my $Key = $RegHash{"HKEY_CURRENT_USER"};
print Dumper $Key;'
$VAR1 = bless( {}, 'Win32::TieRegistry' );

그리고 이것은 하위 키에 대해 작동합니다.

$ perl -e '
my %RegHash;
use Win32::TieRegistry( TiedHash => \%RegHash );
use Data::Dumper;
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"};
print Dumper $Key;'
$VAR1 = bless( {}, 'Win32::TieRegistry' );

그리고 우리는 키에 대한 정보를 인쇄 할 수 있습니다.

$ perl -e '
my %RegHash;
use Win32::TieRegistry( TiedHash => \%RegHash );
use Data::Dumper;
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"};
print Dumper $Key->Information;'
$VAR1 = 'CntSubKeys';
$VAR2 = 48;
$VAR3 = 'MaxSubClassLen';
$VAR4 = 21;
...

그러나 문서는 하위 키를 해시로 취급하여 단순히 하위 키를 나열 할 수 있음을 의미합니다.

$ perl -e '
my %RegHash;
use Win32::TieRegistry( TiedHash => \%RegHash );
use Data::Dumper;
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"};
print Dumper keys %$Key; '

그러나 배열은 비어 있습니다. 부러 졌나요 아니면 내가 뭔가 잘못하고 있습니까? 서브 키를 나열하는 또 다른 방법이 있습니까?

이것은 작동하지 않습니다.

$ perl -e '
my %RegHash;
use Win32::TieRegistry( TiedHash => \%RegHash );
use Data::Dumper;
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"};
print Dumper $Key->SubKeyNames;'
Can't use an undefined value as an ARRAY reference at
/usr/lib/perl5/vendor_perl/5.8/cygwin/Win32/TieRegistry.pm line 720.
도움이 되었습니까?

해결책

코드와 함께 :

my %RegHash;
use Win32::TieRegistry( TiedHash => \%RegHash );
use Data::Dumper;
my $Key = $RegHash{"HKEY_CURRENT_USER\\Software"};
print Dumper keys %$Key;

이 결과를 내 컴퓨터에서 얻습니다 (WinXP, Activestate Perl v5.10.0, Win32-Tireegistry 0.25) :

$VAR1 = 'Adobe\\';
...
$VAR101 = 'Classes\\';
$VAR102 = '\\';

그리고 이것이 제가 두 번째 코드 샘플로 얻는 것입니다.

$VAR1 = 'Adobe';
...
$VAR101 = 'Classes';

따라서 두 코드 샘플은 모두 Perl과 Windows XP를 활성화시켜 잘 작동합니다.

편집 : 이것은보다 일반적인 문제/버그처럼 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top