Actually for Win98 you can install the Remote Registry service.

Only problem is the fact that the OS(at least with what I could locate) 
does not store stuff like memory and processor speed in the registry.

As to ME.  Well this blink of an eye OS does not have a remote registry 
service.   I ended up hardcoding the three machines we have in the script.

At 02:47 PM 4/1/2002 -0800, Timothy Johnson wrote:

>The problem with getting info from Win9x/ME is that you cannot normally
>access the registry remotely (which is where most of the information is
>obtained).  If I had the time I might work on it, but I don't think I could
>ever get it to work remotely.
>
>-----Original Message-----
>From: macnerd [mailto:[EMAIL PROTECTED]]
>Sent: Monday, April 01, 2002 2:49 PM
>To: 'Timothy Johnson'; 'Vinod Panikar';
>[EMAIL PROTECTED]
>Subject: RE: How do I get processor and memory information?
>
>
>Wow.  Awesome.  Could you add Win 9X/Me too... THis is cool.
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of
> > Timothy Johnson
> > Sent: Friday, March 29, 2002 9:52 AM
> > To: 'Vinod Panikar'; [EMAIL PROTECTED]
> > Subject: RE: How do I get processor and memory information?
> >
> >
> >
> > Here's something I wrote a while back.  It's full of bad
> > coding practices,
> > but I think it will give you an idea of where you can get some of this
> > information.
> >
> >
> > ####################################################
> > ##                                                ##
> > ##           CONFIG.PL  v1.5.031502               ##
> > ##           written by Tim Johnson               ##
> > ##                                                ##
> > ##        Retrieves configuration info            ##
> > ##          for specified computer(s)             ##
> > ##                                                ##
> > ####################################################
> >
> > use Win32::AdminMisc;
> > use Win32::TieRegistry(Delimiter=>"/");
> > use Win32::Lanman;
> > use Net::Ping;
> > use Win32::Service;
> >
> > ###  MAIN  #########################################################
> >
> > &setPing;      #Sets the protocol and timeout for Net::Ping
> > &getClients;   #Gets the list of clients
> > print "Retrieving Configuration Info for\:\n";
> >
> > foreach $client(@clients){
> >       if($p->ping($client) == 1){
> > #Client is on the network
> >               print "     \\\\$client\n";
> >               if($reg = $Registry->{"//$client/HKEY_LOCAL_MACHINE/"}){
> > #Read access to Registry
> >                       &getDDInfo;            #Hard Drive Info
> >                       &getMemoryInfo;        #Memory Info
> >                       &getSoftInfo;          #Installed Software
> >                       &getServices;          #Service Info
> >                       &getIPInfo;            #IP Info
> >                       &getHWInfo;            #Misc. Hardware Info
> >                       &printInfo;            #Print text file
> >                       &cleanup;              #undef hashes so
> > they can be
> > reused
> >               }else{
> >                       &printInfo;
> >               }
> >       }else{
> >               print "No Ping on $client!\n";
> >       }
> > }
> >
> >
> >
> > ###  SUBS  ##########################################################
> >
> > sub setPing{
> >       $p = Net::Ping->new('icmp',2);
> > }
> >
> > sub getClients{
> >       if(@ARGV[0]){
> >               foreach $argument(@ARGV){
> >                       push @clients,$argument;
> >               }
> >       }else{
> >               open(INFILE,"current_clients.txt") || die "No clients
> > specified!\n";
> >               @clients = <INFILE>;
> >               chomp @clients;
> >               close INFILE;
> >       }
> >       foreach $client(@clients){
> >               $client =~ tr/a-z/A-Z/;
> >               $client =~ s/^\\//g;
> >       }
> > }
> >
> > sub getDDInfo{
> >       Win32::Lanman::NetServerDiskEnum("\\\\$client",\@drives);
> >       foreach $drive(@drives){
> >               $drive =~ s/://g;
> >               @drvinfo =
> > Win32::AdminMisc::GetDriveSpace("\\\\$client\\$drive\$");
> >               $drive = $drive."\:";
> >               ${$drive}{'CAPACITY'} =
> > sprintf("%5.2f",($drvinfo[0]/1073741824))." GB"; #Convert to GigaBytes
> >               ${$drive}{'SPACE'} =
> > sprintf("%5.2f",($drvinfo[1]/1073741824))." GB";
> >       }
> >       for($i = 0;$drives[$i];$i++){
> >               if(${$drives[$i]}{'SPACE'} < 0.01){  #Keep
> > removable media
> > from showing up
> >                       delete $drives[$i];
> >               }
> >       }
> > }
> >
> > sub getMemoryInfo{
> >       if($memkey =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/Hardware/ResourceMap/System
> > Resources/Physical Memory/"}){
> >       $mem = int((unpack 'L*', $memkey->GetValue('.Translated'))[-1]
> > /1024/1024+16);
> >       }
> > }
> >
> > sub getSoftInfo{
> >       $verRoot =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows
> > NT/CurrentVersion/"};
> >       if($verRoot->{'CurrentVersion'} eq '5.0'){         #OS
> > Version Info
> >               $OS = "Microsoft Windows 2000 ";
> >       }elsif($verRoot->{'CurrentVersion'} eq '4.0'){
> >               $OS = "Microsoft Windows NT 4.0 ";
> >       }elsif($verRoot->{'CurrentVersion'} eq '5.1'){
> >               $OS = "Microsoft Windows XP ";
> >       }else{
> >               $OS = "Unknown Operating System";
> >       }
> >       $servicepack = $verRoot->{'CSDVersion'};
> >       $OSType = $verRoot->{'CurrentType'};
> >       $build = $verRoot->{'CurrentBuildNumber'};
> >       $uninstall =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/W
> > indows/Current
> > Version/Uninstall"};
> >       @softkeys =keys %{$uninstall};
> >       foreach $key(@softkeys){
> > #Check Uninstall
> > keys to enumerate installed software
> >               $softInfo{$key} = $uninstall->{$key}->{'DisplayName'};
> >       }
> > }
> >
> > sub getServices{
> >       Win32::Service::GetServices($client,\%svcs);
> >       @servlist = keys %svcs;
> >       @servlist = sort @servlist;
> >       foreach $service(@servlist){
> >               $shortname = $svcs{$service};
> >               $services->{$service}->{'NAME'} = $service;
> >               Win32::Service::GetStatus($client,$shortname,\%srvStat);
> >               if($srvStat{'CurrentState'} == 4){
> >                       $services->{$service}->{'STATUS'} = "Started";
> >               }
> >               $services->{$service}->{'ACCOUNT'} =
> > $Registry->{"//$client/LMachine/SYSTEM/CurrentControlSet/Servi
> > ces/$shortname
> > /ObjectName"};
> >       }
> > }
> >
> > sub getIPInfo{
> >       ####  WINDOWS 2000  ####
> >
> > if($Registry->{"//$client/HKEY_LOCAL_MACHINE/SOFTWARE/Microsof
> > t/Windows
> > NT/CurrentVersion/CurrentVersion"} eq "5.0"){
> >               $adapterRoot =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows
> > NT/CurrentVersion/NetworkCards/"};
> >               $ipRoot =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/SYSTEM/CurrentContro
> > lSet/Services/
> > Tcpip/Parameters/Interfaces/"};
> >               @adapterKeys = keys %{$adapterRoot};
> >               foreach $key(@adapterKeys){
> >                       $name = $adapterRoot->{$key}->{'ServiceName'};
> >                       $service =
> > $adapterRoot->{$key}->{'ServiceName'};
> >                       $nics->{$name}{'Description'} =
> > $adapterRoot->{$key}->{'Description'};
> >                       $nics->{$name}{'ServiceName'} =
> > $adapterRoot->{$key}->{'ServiceName'};
> >                       $nics->{$name}{'Domain'} =
> > $ipRoot->{"$servicename/Domain"};
> >                       $nics->{$name}{'DNS'} =
> > $ipRoot->{"$servicename/NameServer"};
> >                       if($ipRoot->{"$service/EnableDHCP"} eq
> > "0x00000000"){
> >                               $nics->{$name}{'IPAddress'} =
> > $ipRoot->{"$service/IPAddress"};
> >                               $nics->{$name}{'Subnet'} =
> > $ipRoot->{"$service/SubnetMask"};
> >                               $nics->{$name}{'DHCPEnabled'} = "No";
> >                               $nics->{$name}{'Gateway'} =
> > $ipRoot->{"$service/DefaultGateway"};
> >                       }elsif($ipRoot->{"$service/EnableDHCP"} eq
> > "0x00000001"){
> >                               $nics->{$name}{'DHCPServer'} =
> > $ipRoot->{"$service/DhcpServer"};
> >                               $nics->{$name}{'Subnet'} =
> > $ipRoot->{"$service/DhcpSubnetMask"};
> >                               $nics->{$name}{'IPAddress'} =
> > $ipRoot->{"$service/DhcpIPAddress"};
> >                               $nics->{$name}{'DHCPEnabled'} = "Yes";
> >                               $nics->{$name}{'Gateway'} =
> > $ipRoot->{"$service/DhcpDefaultGateway"};
> >                       }
> >               }
> >       ####  WINDOWS NT  ####
> >
> > }elsif($Registry->{"//$client/HKEY_LOCAL_MACHINE/SOFTWARE/Micr
> > osoft/Windows
> > NT/CurrentVersion/CurrentVersion"} eq "4.0"){
> >               $adapterRoot =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows
> > NT/CurrentVersion/NetworkCards/"};
> >               foreach $key(keys %{$adapterRoot}){
> >                       $name = $adapterRoot->{$key}->{'ServiceName'};
> >                       $service =
> > $adapterRoot->{$key}->{'ServiceName'};
> >                       $nics->{$name}{'Description'} =
> > $adapterRoot->{$key}->{'Description'};
> >                       $nics->{$name}{'ServiceName'} =
> > $adapterRoot->{$key}->{'ServiceName'};
> >                       $ipRoot =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/SYSTEM/CurrentContro
> > lSet/Services/
> > $service/Parameters/Tcpip/"};
> >                       if($ipRoot->{"EnableDHCP"} eq "0x00000000"){
> >                               $nics->{$name}{'IPAddress'} =
> > $ipRoot->{"IPAddress"};
> >                               $nics->{$name}{'Subnet'} =
> > $ipRoot->{"SubnetMask"};
> >                               $nics->{$name}{'DHCPEnabled'} = "No";
> >                               $nics->{$name}{'Gateway'} =
> > $ipRoot->{"DefaultGateway"};
> >                       }elsif($ipRoot->{"EnableDHCP"} eq "0x00000001"){
> >                               $nics->{$name}{'DHCPServer'} =
> > $ipRoot->{"DhcpServer"};
> >                               $nics->{$name}{'Subnet'} =
> > $ipRoot->{"DhcpSubnetMask"};
> >                               $nics->{$name}{'IPAddress'} =
> > $ipRoot->{"DhcpIPAddress"};
> >                               $nics->{$name}{'DHCPEnabled'} = "Yes";
> >                               $nics->{$name}{'Gateway'} =
> > $ipRoot->{"DhcpDefaultGateway"};
> >                       }else{
> >                               print "        DHCP status unknown on
> > $name!\n";
> >                       }
> >               }
> >       }
> > }
> >
> >
> > sub getHWInfo{
> >       $HWRoot =
> > $Registry->{"//$client/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/"};
> >       for($i = 0;$HWRoot->{'System/CentralProcessor/'.$i."/"};$i++){
> > #Processor Info
> >               $HWInfo{'PROCESSOR_'.($i + 1).'_SPEED'} =
> > $HWRoot->{'System/CentralProcessor/'.$i.'/'}->{'~MHZ'};
> >               $HWInfo{'PROCESSOR_'.($i + 1).'_VENDOR'} =
> > $HWRoot->{'System/CentralProcessor/'.$i.'/'}->{'VendorIdentifier'};
> >               $HWInfo{'PROCESSOR_'.($i + 1).'_TYPE'} =
> > $HWRoot->{'System/CentralProcessor/'.$i.'/'}->{'Identifier'};
> >       }
> >       $HWInfo{'BIOS_DATE'} = $HWRoot->{'System/'}->{'SystemBiosDate'};
> > #BIOS Info -- note that the date may appear incorrectly as XX/XX/20.
> >       $HWInfo{'BIOS_VER'} =
> > $HWRoot->{'System/'}->{'SystemBiosVersion'};#This is the way
> > it shows up in
> > the Registry...can you say Y2K Compliancy?
> > }
> >
> > sub printInfo{
> >       open(OUTFILE,">$client.conf.txt");
> >       print OUTFILE "\n";
> >       print OUTFILE "CONFIGURATION INFO FOR $client\:
> > ".localtime(time)."\n";
> >       print OUTFILE
> > "#############################################################
> > #\n\n\n";
> >       print OUTFILE "OPERATING SYSTEM\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       print OUTFILE "     OS           -> $OS\n";
> >       print OUTFILE "     Type         -> $OSType\n";
> >       print OUTFILE "     Build        -> $build\n";
> >       print OUTFILE "     Service Pack -> $servicepack\n\n";
> >
> >       print OUTFILE "PROCESSOR CONFIGURATION\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       for($i = 1;$HWInfo{'PROCESSOR_'.$i.'_SPEED'};$i++){
> >               print OUTFILE "Processor $i\:\n";
> >               print OUTFILE "--------------\n";
> >               print OUTFILE "     Speed   ->
> > \~".hex($HWInfo{'PROCESSOR_'.$i.'_SPEED'})."MHZ\n";
> >               print OUTFILE "     ID      ->
> > ".$HWInfo{'PROCESSOR_'.$i.'_VENDOR'}."
> > ".$HWInfo{'PROCESSOR_'.$i.'_TYPE'}."\n";
> >       }
> >       print OUTFILE "\n";
> >       print OUTFILE "BIOS INFO\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       print OUTFILE "     Date    -> ".$HWInfo{'BIOS_DATE'}."\n";
> >       print OUTFILE "     Version -> ".$HWInfo{'BIOS_VER'}."\n";
> >       print OUTFILE "\n";
> >       print OUTFILE "MEMORY CONFIGURATION\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       print OUTFILE "     Physical Memory-> $mem MB\n";
> >       print OUTFILE "\n";
> >       print OUTFILE "DRIVE CONFIGURATION\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       print OUTFILE "DRIVE LETTER                             SIZE
> > FREE\n";
> >       print OUTFILE
> > "--------------------------------------------------------------\n";
> >       foreach $drive(@drives){
> >               unless(${$drive}{'SPACE'} < 0.01){
> >                       print OUTFILE "$drive ";
> >                       for($i = 0;$i < (42 -
> > length(${$drive}{'CAPACITY'}));$i++){  #Make sure there are
> > the right number
> > of dots
> >                               print OUTFILE ".";
> >                       }
> >                       print OUTFILE ${$drive}{'CAPACITY'};
> >                       for($i = 0;$i < (17 -
> > length(${$drive}{'SPACE'}));$i++){
> >                               print OUTFILE ".";
> >                       }
> >                       print OUTFILE"${$drive}{'SPACE'}\n";
> >               }
> >       }
> >       print OUTFILE "\n";
> >       print OUTFILE "INSTALLED SOFTWARE\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       foreach $soft(sort values %softInfo){
> >               unless(!$soft){
> >                       print OUTFILE "     $soft\n";
> >               }
> >       }
> >       print OUTFILE "\n\n";
> >       print OUTFILE "SERVICES\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       foreach $service(@servlist){
> >               print OUTFILE "$services->{$service}->{'NAME'}";
> >               for($i = 0;$i < (62 -
> > length($services->{$service}->{'STATUS'}) -
> > length($services->{$service}->{'NAME'}));$i++){
> >                       print OUTFILE ".";
> >               }
> >               print OUTFILE "$services->{$service}->{'STATUS'}\n";
> >               if($services->{$service}->{'ACCOUNT'} ne 'LocalSystem'){
> >                       print OUTFILE "               Running As:
> > $services->{$service}->{'ACCOUNT'}\n";
> >               }
> >       }
> >       print OUTFILE "\n\n";
> >       print OUTFILE "IP CONFIGURATION\:\n";
> >       print OUTFILE
> > "==============================================================\n\n";
> >       foreach $nic(keys %{$nics}){
> >               print OUTFILE "$nics->{$nic}->{'Description'}\n";
> >               print OUTFILE
> > "--------------------------------------------------------------\n\n";
> >               print OUTFILE "     DHCP Enabled  ->
> > ".$nics->{$nic}->{'DHCPEnabled'}."\n";
> >               print OUTFILE "     IP Address    ->
> > ".$nics->{$nic}->{'IPAddress'}."\n";
> >               print OUTFILE "     Subnet Mask   ->
> > ".$nics->{$nic}->{'Subnet'}."\n";
> >               print OUTFILE "     Gateway       ->
> > ".$nics->{$nic}->{'Gateway'}."\n";
> >               print OUTFILE "     Service       ->
> > ".$nics->{$nic}->{'ServiceName'}."\n\n";
> >       }
> >       print OUTFILE
> > "##############################################################\n";
> > }
> >
> > sub cleanup{    #If you don't remove these values, there will
> > be garbage in
> > the next machine's data.
> >       undef $OS;
> >       undef $build;
> >       undef $servicepack;
> >       undef %HWInfo;
> >       undef %softInfo;
> >       undef %{$nics};
> >       undef $services;
> >       undef $verRoot;
> >       undef %svcs;
> >       undef %srvStat;
> >       undef $adapterRoot;
> >       undef $ipRoot;
> >       close OUTFILE;
> > }
> >
> > -----Original Message-----
> > From: Vinod Panikar [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, March 29, 2002 9:26 AM
> > To: [EMAIL PROTECTED]
> > Subject: How do I get processor and memory information?
> >
> >
> > Hi there,
> >
> > How do i retrieve processor,memory,ipaddress etc of a machine?
> > AdminMisc module doesn't work for remote machine works only locally.
> >
> > Any info about any other module availability would be helpful.
> >
> > Thanks!
> > Vinod
> > --
> >
> > _______________________________________________
> > Sign-up for your own FREE Personalized E-mail at Mail.com
> > http://www.mail.com/?sr=signup
> >
> > Win the Ultimate Hawaiian Experience from Travelocity.
> > http://ad.doubleclick.net/clk;4018363;6991039;n?http://svc.tra
>velocity.com/p
>romos/winhawaii/
>
>_______________________________________________
>Perl-Win32-Admin mailing list
>[EMAIL PROTECTED]
>To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
>
>----------------------------------------------------------------------------
>----
>This email may contain confidential and privileged
>material for the sole use of the intended recipient.
>If you are not the intended recipient, please contact
>the sender and delete all copies.
>_______________________________________________
>Perl-Win32-Admin mailing list
>[EMAIL PROTECTED]
>To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
>
>--------------------------------------------------------------------------------
>This email may contain confidential and privileged
>material for the sole use of the intended recipient.
>If you are not the intended recipient, please contact
>the sender and delete all copies.
>_______________________________________________
>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

Reply via email to