Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datum der letzten Änderung eines Registryeintrags prüfen (https://www.delphipraxis.net/95610-datum-der-letzten-aenderung-eines-registryeintrags-pruefen.html)

qb-tim 10. Jul 2007 12:41


Datum der letzten Änderung eines Registryeintrags prüfen
 
Hi,

kann mir jemand sagen, wie ich prüfen kann, wann ein Registryeintrag zuletzt geändert wurde?

Danke im Voraus

Christian Seehase 10. Jul 2007 12:49

Re: Datum der letzten Änderung eines Registryeintrags prüfen
 
Moin Tim,

schau Dir dazu mal MSDN-Library durchsuchenRegQueryInfoKey an.

mkinzler 10. Jul 2007 12:54

Re: Datum der letzten Änderung eines Registryeintrags prüfen
 
So garnicht. Du könntest aber Schreibvorgänge loggen lassen.

qb-tim 10. Jul 2007 12:56

Re: Datum der letzten Änderung eines Registryeintrags prüfen
 
@ Christian Seehase

http://msdn2.microsoft.com/en-us/library/ms724902.aspx

Zitat:

LONG WINAPI RegQueryInfoKey(
HKEY hKey,
LPTSTR lpClass,
LPDWORD lpcClass,
LPDWORD lpReserved,
LPDWORD lpcSubKeys,
LPDWORD lpcMaxSubKeyLen,
LPDWORD lpcMaxClassLen,
LPDWORD lpcValues,
LPDWORD lpcMaxValueNameLen,
LPDWORD lpcMaxValueLen,
LPDWORD lpcbSecurityDescriptor,
PFILETIME lpftLastWriteTime
);
Da steht was über LastWriteTime... Aber wie setzte ich das in Delphi um?

Christian Seehase 10. Jul 2007 13:22

Re: Datum der letzten Änderung eines Registryeintrags prüfen
 
Moin Tim,

ich habe Dir mal ein kleines Beispiel erstellt:

Delphi-Quellcode:
function GetLastKeyAccess(const AhRootKey : HKEY;const AsSubKey : string;var AsResult : string) : boolean;

var
  hResult    : HKEY;
  ftLastWrite : FILETIME;
  ft         : FILETIME;
  st         : SYSTEMTIME;

begin
  if RegOpenKeyEx(AhRootKey,PChar(AsSubKey),0,KEY_READ,hResult) <> ERROR_SUCCESS then begin
    AsResult := 'ERROR OPEN: '+SysErrorMessage(GetLastError);
    Result  := False;
    Exit;
  end;
  try
    if RegQueryInfoKey(hResult,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,@ftLastWrite) <> ERROR_SUCCESS then begin
      AsResult := 'ERROR QUERY: '+SysErrorMessage(GetLastError);
      Result  := False;
    end;
    if not FileTimeToLocalFileTime(ftLastWrite,ft) then begin // An Zeitzone anpassen
      AsResult := 'ERROR CONVERT FT: '+SysErrorMessage(GetLastError);
      Result  := False;
      Exit;
    end;
    FillChar(st,SizeOf(st),0);
    if not FileTimeToSystemTime(ft,st) then begin // Zur Ausgabe umwandeln
      AsResult := 'ERROR CONVERT ST: '+SysErrorMessage(GetLastError);
      Result  := False;
      Exit;
    end;
    AsResult := Format('%.2d.%.2d.%.4d %.2d:%.2d:%.2d,%.3d',[st.wDay,st.wMonth,st.wYear,st.wHour,st.wMinute,st.wSecond,st.wMilliseconds]);
    Result  := True;
  finally
    RegCloseKey(hResult);
  end;
end;
Der Aufruf kann dann so erfolgen:

Delphi-Quellcode:
var
  sResult : string;

begin
  if GetLastKeyAccess(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',sResult) then begin
    ShowMessage('Letzte Änderung:'#13#10+sResult);
  end else begin
    ShowMessage('Fehler:'#13#10+sResult);
  end;
end;

qb-tim 10. Jul 2007 14:24

Re: Datum der letzten Änderung eines Registryeintrags prüfen
 
:thumb: Perfekt!!!! Das ist genau das was ich brauche!!! :zwinker:
:cheers: Danke :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz