Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Monks, I am driving myself nuts over a Win32::Perms problem. I don't know WHY, but I simply CANNOT add/allow permissions to a registry key. Before you retort to RTFM, that's been done, and I simply CANNOT get it to add. I can remove existing perms fine, and I can set that fine, but when I add or allow, each line returns the error. Here's my code in question (as you can see, I've rried MULTIPLE different methods, all of which FAIL!):
$winReg = "registry:HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Con +trol\\SecurePipeServers\\Winreg"; $object = new Win32::Perms($winReg); $object->Remove(-1)|| print "Error removing!"; #$object->Add( %hash )|| print "Error adding $defAdminName\n"; #$object->Allow( %hash )|| print "Error allowing.\n"; #$object->Allow( $defAdminName, 'FULL', 'KEY')|| print "Error allowing +(2)\n"; $object->Allow( $defAdminSid, 'FULL', 'KEY')|| print "Error allowing(3 +)\n"; $object->Allow( 'jpavel', FULL)|| print "Error allowing(4)\n"; $object->Allow( {Account=>'jpavel', Mask=>FULL } )|| print "Error allo +wing(5)\n"; $object->Allow( $defAdminBinSid, 'FULL', 'KEY')||print "Error allowing +(6)\n"; $object->Add( $defAdminSid, 'FULL', 'ALLOW', 'KEY')|| print "Error add +ing(3)\n"; $object->Add( 'jpavel', FULL, 'ALLOW', 'KEY')|| print "Error adding(4) +\n"; $object->Add( {Account=>'jpavel', Mask=>FULL , Type=>ALLOW, Flag=>KEY} + )|| print "Error adding(5)\n"; $object->Add( $defAdminBinSid, 'FULL', 'ALLOW', 'KEY')||print "Error a +dding(6)\n"; $object->SetDacl()||print "Error setting!"; $object->Close()|| print "Error closing!";
PLEASE help, or I shall surely go mad. Using SIDs didn't help, using Binary SIDs didn't help, using hashes didn't help... HELP!

Replies are listed 'Best First'.
Re: Win32::Perms frustration
by Anonymous Monk on Aug 20, 2002 at 17:02 UTC
    For the record, these also fail:
    $object->Allow( $defAdminSid, FULL, KEY)|| print "Error allowing(1)\n" +; $object->Allow( 'jpavel', FULL)|| print "Error allowing(2)\n"; $object->Allow( {Account=>'jpavel', Mask=>FULL } )|| print "Error allo +wing(3)\n"; $object->Allow( $defAdminBinSid, FULL, KEY)||print "Error allowing(4)\ +n"; $object->Add( $defAdminSid, FULL, ALLOW, KEY)|| print "Error adding(1) +\n"; $object->Add( 'jpavel', FULL, ALLOW, KEY)|| print "Error adding(2)\n"; $object->Add( {Account=>'JPAVELTOO\\jpavel', Mask=>FULL , Type=>ALLOW, + Flag=>KEY} )|| print "Error adding(3)\n"; $object->Add( $defAdminBinSid, FULL, ALLOW, KEY)||print "Error adding( +4)\n"; $object->SetDacl()||print "Error setting!"; $object->Close()|| print "Error closing!";