in reply to Windows XP: StdRegProv

Hi jschollen,

I'm afraid you're going to need to provide more information.

It looks like you've provided a full program, judging from the fact that you start with the shebang line # !/usr/local/bin/perl -w, followed by your libraries and variables.

But you haven't declared $log anywhere in your program, much less the associated methods info and infoWarning.

You've said:  "I'm having trouble getting StdRegProv to work with Perl", but you haven't said exactly how it fails.

You're also going to get errors with $wmiService unless you declare it (eg. my $wmiService), and the same for $KEY_QUERY_VALUE which is also never declared.

Can you please fix those problems, and explain how this is failing for you exactly?


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

Replies are listed 'Best First'.
Re^2: Windows XP: StdRegProv
by jschollen (Beadle) on Feb 09, 2007 at 08:40 UTC
    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).
      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.