in reply to Re: Windows XP: StdRegProv
in thread Windows XP: StdRegProv

The $log is not declared, since it is irrelevant in this case.
(As I noted under the code snipset: "It's a fancy way of printing data to screen and log file").

Since it IS a code snipset: it may be that I indeed left out a 'my' declaration. The easiest way to solve this is putting in the 'my' statement or removing the 'use strict'.

The main problem is stated as comment inside the code snipset:
1. Win32::OLE->LastError() and Win32::GetLastError() return value 0 (which means success).
(which means I'm doing everything wright by coding point of view.)

2. There are no warnings thrown with the '-w' flag (in the original progam.)
(which also means that I'm doing everything wright by coding point of view.)

3. When looking at the code:
@tmpTest = $wmiService->CheckAccess($HKEY_LOCAL_MACHINE, "HKEY_CURRENT +_USER\\Console", $KEY_QUERY_VALUE, $HasAccessRight);
print "Key access rights: $HasAccessRight\n"; # Returns nothing
print "Key access rights (2): @tmpTest\n"; # Retruns 2

The first print ($HasAccessRight) should return the correct value, but it returns an empty string (actual value is 50, checked it with regedit).
(This is the main problem).
The second print (@tmpTest) returns value '2'. Normally this value should be 0 (If I read MSDN correctly), while the value 2 MIGHT indicate that I don't have permission (If I read MSDN correctly). The strange thing is, that I'm a full administrator on my Windows XP machine (in which case I should have full access to everyting).
(Which is probably a lead on what is going wrong, but I'm unable to find the issue.)

Hence, to repeat my question, Can someone help me getting StdRegProv to work with Perl?

Thanks in advance.

(p.s.: I removed all the $log objects and hopefully declared all variables to avoid any other misunderstanding).

Replies are listed 'Best First'.
Re^3: Windows XP: StdRegProv
by jschollen (Beadle) on Feb 09, 2007 at 11:26 UTC
    I found the sollution!

    If someone has the same problem, look at the package 'Win32::OLE::Variant'.
    (Thanks to a post by 'Bill Luebkert' on 'Nabble').

    He gave the next example:

    Thanks to all of you who helped me with this issue.