Версия для печати

Как получить дату установки Windows?

Оцените материал
(2 голосов)

Как получить дату установки Windows?

procedure TForm1.Button1Click(Sender: TObject);
var
  ZoneName, tmp: string;
  UTC: Integer;
  InstallDate: DWORD;
  _date, _time: DWORD;
  t: TDateTime;
begin
   Reg := TRegistry.Create;
   Reg.RootKey := HKEY_LOCAL_MACHINE;
 
   // Получение часового пояса
   if Reg.OpenKeyReadOnly( 'SYSTEM\CurrentControlSet\Control\TimeZoneInformation' ) then
   begin
      ZoneName := Reg.ReadString( 'TimeZoneKeyName' );
      Reg.CloseKey;
if Reg.OpenKeyReadOnly( 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\' + ZoneName ) then
      begin
         tmp := Reg.ReadString( 'Display' );
         UTC := StrToInt( Copy( tmp, 5, 3 ) ); 
// Тут лучше использовать регулярное выражение
         Reg.CloseKey;
      end;
   end;
 
   // Определение даты установки Windows
   if Reg.OpenKeyReadOnly( 'SOFTWARE\Microsoft\Windows NT\CurrentVersion' ) then
   begin
      InstallDate := Reg.ReadInteger( 'InstallDate' );
      _date := InstallDate div 86400;
      _time := InstallDate mod 86400;
      t := {дата} EncodeDate( 1970, 1, 1 ) + _date +
 {время} EncodeTime( _time div 3600 + UTC, ( _time div 60 ) mod 60, _time mod 60, 0 );
      ShowMessage( DateTimeToStr( t ) );
   end;
 
   Reg.CloseKey;
   Reg.Free;
end;
Прочитано 5998 раз