#!perl use Win32::FileSecurity; use Cwd qw(cwd); use File::Path; use strict; use warnings; sub remove_dir { my ($path) = @_; my $currpath = cwd; my $ok = chdir $path; if ($ok) { my @dir = <*>; ## check if directory is empty if (!@dir) { my $dirmask = Win32::FileSecurity::MakeMask( qw(FULL GENERIC_ALL) ); my %hash; # if ( Win32::FileSecurity::Get( $path, \%hash ) ) { # while( (my $name, my $mask) = each %hash ) { # print "$name:\n\t"; # my @happy; # Win32::FileSecurity::EnumerateRights( $mask, \@happy ) ; # print join( "\n\t", @happy ), "\n"; # } # } Win32::FileSecurity::Get( $path, \%hash); $hash{Administrator} = $dirmask; $ok = chdir $currpath; if ( Win32::FileSecurity::Set($path, \%hash) ) { print "\n\t$path --> Permissions Changed"; } else { print "\n\t$path --> Permission change failed$!\n$^E"; } if (rmtree $path) { print "\n\t$path --> Removed"; } else { print "\n\t$path --> Can't be removed $!\n$^E"; } } } }