Dax, You can change the line:
$object = $wmi-> Get("CIM_Directory='$Fpath'"); to: $object = $wmi-> Get("CIM_DataFile='$Fpath'"); -Shawn On Thu, 13 Nov 2003 23:19 , Dax T. Games <[EMAIL PROTECTED]> sent: >I found this on the Perl Win32 Admin Archive and it works to turn off permissions >inheritence on directories but how do you do the same on files in the directories? > >Any help is appreciated. > >Than ks, > >Dax > > > >-----Original Message----- >From: [EMAIL PROTECTED] >[mailto:[EMAIL PROTECTED] Behalf Of > >Jason, > >You can't do this with Win32::Perms. The best way I've found is to use WMI. >Here's a simple sub to do it, pulled from one of my scripts. Pass it the >path to the directory and a flag value from this list: > >0 - DENY_INHERIT (Uncheck the "Allow inheritable..." check box) >1 - ALLOW_INHERIT (Check the box) >2 - DENY_INHERIT_PLUS (Uncheck the box and force Windows to re-run the >inheritance algorithim of the dir and all of it's children) >3 - ALLOW_INHERIT_PLUS (Same thing as 2 but with the box checked) > >-Shawn > >### ---------- Begin Code ---------- ### > >use Win32::OLE; > >sub inheritance { >### Syntax: inheritance( DirToModify, FlagValue ) > >### ---------- Declarations ---------- ### >use constant ALLOW_INHERIT => 33796; >use constant ALLOW_INHERIT_PLUS => ALLOW_INHERIT + 256; >use constant DENY_INHERIT => 37892; >use constant DENY_INHERIT_PLUS => DENY_INHERIT + 256; > >my ($Fpath, $cc) = @_; >$Fpath =~ s/'/\\'/; > >my $wmi = Win32::OLE-> GetObject( >"winmgmts:{impersonationLevel=impersonate}!". > "//$currentServerName/root/CIMV2" ); > >#print "vars - $currentServerName/$Fpath\n"; > >eval { > $object = $wmi-> Get("CIM_Directory='$Fpath'"); > $objSecSetting = $wmi-> Get("Win32_LogicalFileSecuritySetting.Path=" . "\'" >. $object-> {Name} . "\'"); > $outParam = $objSecSetting-> ExecMethod_("GetSecurityDescriptor"); > $objSecDescriptor = $wmi-> Get("Win32_SecurityDescriptor")->SpawnInstance_; > #$objMethod = $objSecSetting-> Methods_("SetSecurityDescriptor"); > #$inParam = $objMethod-> inParameters->SpawnInstance_; > if ($cc == 0) { > $objSecDescriptor-> {ControlFlags} = DENY_INHERIT; > } elsif ($cc == 1) { > $objSecDescriptor-> {ControlFlags} = ALLOW_INHERIT; > } elsif ($cc == 2) { > $objSecDescriptor-> {ControlFlags} = DENY_INHERIT_PLUS; > } elsif ($cc == 3) { > $objSecDescriptor-> {ControlFlags} = ALLOW_INHERIT_PLUS; > } > $objSecDescriptor-> {DACL} = $outParam->{Descriptor}->{DACL}; > #$inParam-> {Descriptor} = $objSecDescriptor; > #$objSecSetting-> ExecMethod_("SetSecurityDescriptor"), $inParam); > $objSecSetting-> SetSecurityDescriptor( $objSecDescriptor ); >}; > >} # End Sub > >### ---------- End Code ---------- ### > >-----Original Message----- >From: [EMAIL PROTECTED] >[mailto:[EMAIL PROTECTED] Behalf Of >Jason shaw >Sent: Monday, August 05, 2002 4:31 PM >To: [EMAIL PROTECTED] >Subject: Win32::Perms and Inheritance > > >I'm having problems trying to set the permissions on a folder on a Win2K >system. Does any one know how to remove the "Allow inheritable permissions >from parent to propagate to this object" on the security tab of a folder's >properties. From everything I understand, this should be possible with >Win32::Perms, but I guess I'm just not seeing it. And I've looked through >past posts and seen people talk about it, but never saw a solution. I've >been working on this for a while now and I'm running outta ideas. Any help >would be great! Thanks! > > > > >_______________________________________________ >Perl-Win32-Admin mailing list >[EMAIL PROTECTED] >To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > _______________________________________________ Perl-Win32-Admin mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs