Though this is hackish, it's going to suit my needs for now. This something that just needs to get the job done. I'll work more on it later, but for now, this block of code is going to make it work good enough..
my $enum;
eval {$enum = Win32::OLE::Enum->new("WinNT://$comp")};
unless ($enum) {
print "$comp is not NT/2000\n";
return;
}
Thanks for the ideas. They got me thinking in a different direction.
Rich
Update: *sigh* this doesn't work. Guess I'm trying to get this done too fast. I'll update when it *does* work.
Update II:
Here's what I ended up going with. It's not portable, but pulling registry entries isn't portable anyway. Win32::Process gave me what I needed...
sub RegConnect {
my ($pObj, $ExitCode);
my $comp = shift;
my $pString = "perl -MWin32::TieRegistry -e " . '"' .
'$Registry->Connect(' ."'" . $comp .
"', 'LMachine');" . '"';
Win32::Process::Create($pObj,
"c:\\perl\\bin\\perl.exe",
$pString, 0,
NORMAL_PRIORITY_CLASS,
".")|| die "Can't create Perl Process: $!\n";
$pObj->Wait(7000);
$pObj->GetExitCode($ExitCode);
if ($ExitCode) {
$pObj->Kill(1);
return 0;
}
return 1;
}
|