Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

Re: Registry-Schlüssel für Installationsdatum unter Vista

  Alt 28. Mai 2007, 11:46
Hallo Marcel,

probiere mal folgendes : (wie immer alles ohne Gewähr)
Delphi-Quellcode:
  If isWinNT Then
    regKey:= 'SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION';
  If isWIN9x Then
    regKey:= 'SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION';
  Reg:= TRegistry.Create;
  Reg.RootKey:= HKEY_LOCAL_MACHINE;
  If Reg.OpenKeyReadOnly( regKey ) Then
  Begin
    If isWINNT Then regBuf:= 'InstallDate'
    Else
    If isWIN9x Then regBuf:= 'FirstInstallDateTime'
    Else regKey:= '';


    If (regKey <> '') Then
    Begin
      If reg.ValueExists(regBuf) Then
      Begin
        dType:= reg.GetDataType(regBuf);

        Case dType Of
          rdInteger : Begin
                        If isWINNT Then Result.InstallDate:= ctime2datetime( reg.ReadInteger(regBuf) );
                        If isWin9x Then Result.InstallDate:= FormatDateTime('dd.mm.yyyy', FileDateToDateTime(reg.ReadInteger('FirstInstallDateTime')));
                      End;
          rdBinary : Begin
                        reg.ReadBinaryData( regBuf, wBuf, SizeOf(wBuf) );
                        If isWINNT Then Result.InstallDate:= ctime2datetime( wBuf );
                        If isWin9x Then Result.InstallDate:= FormatDateTime('dd.mm.yyyy', FileDateToDateTime(wBuf));
                      End;
        End;
      End;
    End;
  End;
Mit dem isWinNT und dem isWin9x, prüfe ich ab um welches Betriebsystem es sich handelt. Dieses musst Du natürlich durch deine Abprüfung ersetzen.

Dazu brauchst Du natürlich noch diese Funktion :
Delphi-Quellcode:
function ctime2datetime(givenTime: Double): string;
var DateTime: TDateTime;
  TimeZoneInformation: TTimeZoneInformation;
begin
  GetTimeZoneInformation(TimeZoneInformation);
  DateTime:= EncodeDate( 1970, 1, 1 )+(givenTime/86400)-((TimeZoneInformation.Bias+TimeZoneInformation.daylightBias)/1440);
  Result:= FormatDateTime('dd.mm.yyyy', DateTime);
end;
Diese Variante funktioniert unter W2k, W2k3 und Vista.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat