I don't see a .../12.0/Common/General in my registry: I see .../16.0/Common/General, and .../14.0/Common/General, but .../12.0/Common (which does exist in mine) doesn't have a General subkey.
I think you're getting confused about subkeys vs. values. You have placed the 'general' subkey in a variable called $data. In the Win32::TieRegistry examples,$data holds a value, not a subkey.
The error you are getting seems to indicate that HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\General does not exist. Since it doesn't exist in my registry, that doesn't surprise me.
I have built up an SSCCE which uses the 16.0 version, and looks at a value in there (since I don't have the 12.0 'General' subkey)
#!perl use warnings; use strict; use Data::Dumper; use Win32::TieRegistry( Delimiter => '#', ArrayValues => 0); my $pound = $Registry->Delimiter("/"); my $targetKey = $Registry->{"HKEY_CURRENT_USER/Software/Microsoft/Offi +ce/16.0/Common"} or die "Can't read the 'Common' key: $^E\n"; print STDERR "targetKey = '$targetKey'\n"; # this is the one you + called "data" before. It's not data, it's another key my $generalKey = $targetKey->{"General"} # thhis is another subkey or die "Can't read the 'General' subkey: $^E\n"; print STDERR "generalKey = '$generalKey'\n"; # this is the one y +ou called "data" before. It's not data, it's another key print STDERR Dumper $generalKey; # here, you can access actual values from the key, with or without a p +refixed slash my $data = $generalKey->{'/Authorized'} // '<undef>'; printf STDERR qq("%s" => >>%s<<\n), '/Authorized', $data; my $noslash = $generalKey->{'Authorized'} // '<undef>'; printf STDERR qq("%s" => >>%s<<\n), 'Authorized', $noslash; my $dne = $generalKey->{'DoesNotExist'} // '<undef>'; printf STDERR qq("%s" => >>%s<<\n), 'DoesNotExist', $dne; # update target key to 12.0: $targetKey = $Registry->{"HKEY_CURRENT_USER/Software/Microsoft/Office/ +12.0/Common"} or die "Can't read the '12.0/Common' key: $^E\n"; print STDERR "targetKey = '$targetKey'\n"; # this exists in mine $generalKey = $targetKey->{"General"} or die "Can't read the '12.0/Common/General' subkey: $^E\n"; print STDERR "generalKey = '$generalKey'\n"; # this doesn't exis +t in mine, so it won't get here __END__ generalKey = 'Win32::TieRegistry=HASH(0x26620c8)' $VAR1 = bless( { '/Xlstart' => 'XLSTART', ... '/Authorized' => '0x7FFFFFFF', ... }, 'Win32::TieRegistry' ); "/Authorized" => >>0x7FFFFFFF<< "Authorized" => >>0x7FFFFFFF<< "DoesNotExist" => >><undef><< targetKey = 'Win32::TieRegistry=HASH(0x51e80a8)' Can't read the '12.0/Common/General' subkey: The system cannot find th +e file specified
I get a different error message than you got... but since you omitted code, who knows what else is different. Try my example, and see what you get. If it works the same, then you can try to tweak the code to make it do what you want.
In reply to Re^3: [OT] Using Module TieRegistry? for reading and pasting registrykey into another section
by pryrt
in thread [OT] Using Module TieRegistry? for reading and pasting registrykey into another section
by mh88
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |