Win32 :: tieregistry 목록 서브 키는 왜 할 수 없습니까?
문제
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를 활성화시켜 잘 작동합니다.
편집 : 이것은보다 일반적인 문제/버그처럼 보입니다.
- Tieregistry 모듈은 값을 열거하지 못합니다 Community.activeState.com에서
- win32 :: tieregistry 오류 (아니면 나입니까?) prlmnks.org에서
- 블로그 게시물 Weblog.siliconcerebrate.com에서
- 모든 것이 Windows Vista와 관련이있는 것 같습니다.
제휴하지 않습니다 StackOverflow