Thanks for the input!. However, I have a simpler script that I use to change
the registry settings. Granted that it does not have all the checks, etc.
My script does the same thing (modifies the particular registry key).
I was concerned that the GUI does not show a change in time zone and the
clock must be manually reset. I was really looking for something that would
cause the time on the local system to change as well, as what happens when
the zone info is changed via the GUI. I guess that I will just have to
settle changing the registry and then syncing up the times on the PCs.
Thanks for the help.
>-----Original Message-----
>From: [EMAIL PROTECTED]
>[mailto:[EMAIL PROTECTED]]On Behalf Of
>Mcguire, Timothy, L (Tim)
>Sent: Thursday, November 02, 2000 9:53 AM
>To: '[EMAIL PROTECTED]'
>Cc: '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]'
>Subject: RE: changing time zones
>
>
>There are 2 things you can do.
>
>1. Edit "CurrentControlSet001" this is your "working copy" if you will and
>will automatically update "CurrentControlSet".
>
>2. Have the user run a "net time \\\someserver /set /y". This
>seems to sync
>everything up after I run a script and ensures that a. the script
>ran and b.
>it worked and c. the user has the correct time. This puts into effect the
>changes you just made without a reboot In order to run this the user must
>have the right to change the time. You could however experiment with
>running a generic net time. This may work.
>
>See my scripts below. Use freely----->at your own risk.
>
>---CHANGES ZONE TO GMT (NO DAYLIGHT) AFTER A SERIES OF CHECKS
>
>#################Time Zone Set##################
>################################################
>use Win32::TieRegistry;
>open (timelog, ">timelog.txt");
>printf timelog ("%-20s %-25s %-25s\n\n\n","Computer Name","Time Zone
>Before","Timezone After");
>close timelog;
>#####################OPENS LIST OF MACHINES TO OPERATE ON
>open (FILE, "$ARGV[0]");
>
>while (<FILE>)
>
> {
>####CHECKS TO MAKE SURE MACHINE IS PINGABLE AND QUITS IF IT IS NOT (see sub
>at bottom)
> print "\n";
> chomp;
> print "Trying $_\n";
> if (pingable($_))
> {
> print "$_ is pingable!!!\n";
>
>###CONNECTS TO REMOTE MACHINE'S REGISTRY and sets working key
> $rmtreg =
>$Registry->Connect($_,"LMachine",{Delimiter=>"#"});
> $rmtkey =
>$rmtreg->{"System#CurrentControlSet001#Control#TimeZoneInformation"};
>
>####LETS YOU KNOW OF SUCCESS AND LOGS MACHINES THAT SCRIPT COULDN'T CONNECT
>WITH
> if (not $rmtreg)
> {
> open (NOREG, ">>cantgetreg.txt");
> print NOREG "$_\T$!\n";
> close (NOREG);
> die "Failure of remote registry
>fetch on $_!!!\t$!\n";
> }
> print "Succesful remote registry fetch on $_!!!\n";
>
>
>####Checks if change is required, makes chage if need be, logs actions to
>testlog.txt
> open (timelog, ">>timelog.txt");
> printf timelog ("%-20s %-25s
>",$_,$rmtkey->{DaylightName});
> #print $rmtkey->{StandardName};
> $keytest = $rmtkey->{StandardName};
> if ($keytest eq "GMT Standard Time")
> {
> $rmtkey->{ActiveTimeBias} =
>[pack("L",0),REG_DWORD] or die ("Couldn't do ActiveTimeBias");
> $rmtkey->{DaylightBias} =
>[pack("L",0),REG_DWORD] or die ("Couldn't do DaylightTimeBias");
> $rmtkey->{DisableAutoDaylightTimeSet} =
>[pack("L",1),REG_DWORD] or die ("Couldn't do DisableAutoDaylightTimeSet");
> $rmtkey->{DaylightStart} =
>[$rmtkey->{StandardStart},REG_BINARY] or die ("Couldn't do DaylightStart");
> $rmtkey->{DaylightName} = "GMT Standard
>Time" or die ("Couldn't do DaylightName");
> }
> printf timelog ("%-25s\n",$rmtkey->{DaylightName});
>
>}
>if (not pingable($_))
> {
> print "$_ is not pingable!!!\t$!\n";
> open (NOPING, ">>notpingable.txt");
> print NOPING "$_\t\t$!\n";
> close (NOPING);
>}
>}
>
>
>
> #### pingable returns 0 if host doesn't ping, 1 if it
>does.
>
> sub pingable
> {
> use Net::Ping;
> my $node = $_[0];
> my $p = Net::Ping->new("icmp");
> if ($p->ping($node))
> {
> $p->close();
> return 1;
> }
> else
> {
> $p->close();
> return 0;
> }
> }
>
>
>ADDS CHANGE TIME RIGHTS FOR EVERYONE----
>
>###################GRANTS CHANGE SYSTEM TIME TO THE EVERYONE GROUP ON
>machines in TEXT FILE
>use Win32::Lanman;
>open (FILE, "$ARGV[0]");
>open (ERRORLOG, ">>ERRORLOG.txt");
>while (<FILE>) {
>
> chomp;
> if(!Win32::Lanman::GrantPrivilegeToAccount("\\\\$_",
>"SeSystemtimePrivilege",["everyone"]))
> {
> print "Sorry, something went wrong on $_, logging
>error: ";
> # get the error code
> print Win32::Lanman::GetLastError(), " to
>ERRORLOG.TXT\n";
> print ERRORLOG "$_\n";
> next;
> }
>
> print "Group: \"Everyone\" given \"Set System Time\" right on
>$_\n";
>
> }
> close ERRORLOG;
>
>Hope this helps,
>
>Tim McGuire
>AT&T Solutions
>Durham, NC
>[EMAIL PROTECTED]
>
>
>----original message------
>
>
>Reply-To: <[EMAIL PROTECTED]>
>From: "navilliat" <[EMAIL PROTECTED]>
>To: "EDWARDS, John" <[EMAIL PROTECTED]>,
><[EMAIL PROTECTED]>
>Subject: RE: changing time zones
>Date: Tue, 31 Oct 2000 11:50:28 -0500
>charset="iso-8859-1"
>
>I have been doing this. The problem seems to be that the PC does not
>realize the change until it reboots, which is a drag. I need to be able to
>w/o rebooting the PCs, if at all possible.
>
>Dan
>_______________________________________________
>Perl-Win32-Admin mailing list
>[EMAIL PROTECTED]
>http://listserv.ActiveState.com/mailman/listinfo/perl-win32-admin
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/perl-win32-admin