![]() |
Registry-Schlüssel für Installationsdatum unter Vista
Hallo,
ich suche den Registry-Schüssel für das Datum der Windowsinstallation unter Vista. WinNT < 6.0:
Delphi-Quellcode:
Win9x:
// Schlüssel
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ InstallDate
Delphi-Quellcode:
Wie lautet er aber unter Vista? Um das Datum zu ermitteln habe ich ein Code gefunden, den etwas bearbeitet und es scheint nur "nicht" auf Vista zu funktionieren, deshalb nehme ich an, dass das entweder nicht mehr so möglich oder ein anderer Schlüssel ist. Ein Freund hat es geteste und es kam als Ergebnis 1.1.1970.
// Schlüssel
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ FirstInstallDateTime Gruß Mazel |
Re: Registry-Schlüssel für Installationsdatum unter Vista
Unter Vista heißt der auch InstallDate und ist eine Reg_DWORD
|
Re: Registry-Schlüssel für Installationsdatum unter Vista
Mhm, wieso funktioniert das dann aber nicht auf seinem Rechner? Wenn es der selbe Schlüssel ist, sollte das doch gehen? Kann es sein, dass der Wert nicht stimmt?
Dann werde ich ihn mal nach dem DWORD-Wert fragen und dein bei mir einsetzen. |
Re: Registry-Schlüssel für Installationsdatum unter Vista
Greifst du auch nur lesend auf den Registry-Key zu? Ansonsten koenntest du wohl UAC-verbundene Schwierigkeiten kriegen ;)
Greetz alcaeus |
Re: Registry-Schlüssel für Installationsdatum unter Vista
Ja, nur lesend:
Delphi-Quellcode:
CURRENT_VERSION_NT = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\';
CURRENT_VERSION_32 = 'SOFTWARE\Microsoft\Windows\CurrentVersion\'; ... RootKey := HKEY_LOCAL_MACHINE; if WinNT then Reg.OpenKeyReadOnly(CURRENT_VERSION_NT) else Reg.OpenKeyReadOnly(CURRENT_VERSION_32); ... |
Re: Registry-Schlüssel für Installationsdatum unter Vista
Hast du auch schon mal mit Regedit kontroliert was da drin steht?
|
Re: Registry-Schlüssel für Installationsdatum unter Vista
Hallo Marcel,
probiere mal folgendes : (wie immer alles ohne Gewähr)
Delphi-Quellcode:
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.
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; Dazu brauchst Du natürlich noch diese Funktion :
Delphi-Quellcode:
Diese Variante funktioniert unter W2k, W2k3 und Vista.
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; |
Re: Registry-Schlüssel für Installationsdatum unter Vista
Danke, der Code scheint der zu sein den ich gefunden habe, hier mal meine abgeänderte Variante die aber wie gesagt unter Windows XP funktioniert:
Delphi-Quellcode:
@Bernhard Geyer:
Reg := TRegistry.Create(KEY_READ);
with Reg do try RootKey := HKEY_LOCAL_MACHINE; if WinNT then Reg.OpenKeyReadOnly(CURRENT_VERSION_NT) else Reg.OpenKeyReadOnly(CURRENT_VERSION_32); if not WinNT then begin if GetDataType('FirstInstallDateTime') = rdInteger then Buf := DWORD(ReadInteger('FirstInstallDateTime')) else ReadBinaryData('FirstInstallDateTime', Buf, SizeOf(Buf)); VersionInfo.InstallDate := FormatDateTime('dd.mm.yyyy hh:nn:ss "Uhr"', FileDateToDateTime(Buf)); end else begin if GetDataType('InstallDate') = rdInteger then Buf := DWORD(ReadInteger('InstallDate')) else ReadBinaryData('InstallDate', Buf, SizeOf(Buf)); VersionInfo.InstallDate := FormatDateTime('dd.mm.yyyy hh:nn:ss "Uhr"', EncodeDate(1970, 1, 1) + (Buf / SecsPerDay)); end; finally Reg.Free; end; Ja also unter XP gibts InstallDate aber da ich kein Vista habe, bin ich auch andere mit Vista angewiesen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz