#perl -w # # Install this Perl as MS IIS and MS Personal Web server script processor. # # Written by Jeff Urlwin # use Win32::Registry; use Getopt::Long; use Config; # use strict; # can't seem to get Win32::Registry to work correctly with strict. # it doesn't like $HKEY_LOCAL_MACHINE, below... # $::opt_o = 0; # override current value of .pl in IIS... GetOptions(qw(o!)) or die "Invalid arguments"; $perlexe = $Config{binexp} . "\\perl.exe"; print "Your configuration (lib\Config.pm) is invalid. ", "binexp is not set to where your perl.exe is located\n" unless -f $perlexe; my $ScriptMapKey; my $regkey = "SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Parameters\\Script Map"; $HKEY_LOCAL_MACHINE->Open($regkey, $ScriptMapKey) or die "You do not have IIS or PWS installed!\n$!\n"; my %values = (); if ($ScriptMapKey->GetValues(\%values)) { print "You currently have the following mappings.\n"; foreach (sort keys (%values)) { print "Key: $_, Value = $values{$_}[2]\n"; } print "\n"; print "Perl is installed as a valid script for IIS/PWS\n" if $values{".pl"}; if ($opt_o or !$values{".pl"}) { print "Setting perl as the script handler for .pl files ($perlexe).\n"; if (!$ScriptMapKey->SetValueEx('.pl', NULL, REG_SZ, "$perlexe %s %s")) { print "update of .pl value failed: $!\n", "Do you have permission to do this?\n"; } print "$!\n"; } } else { print "no keys? Something's wrong...\n"; } $ScriptMapKey->Close();