AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Registry - Woher TimeStamp nehmen?
Thema durchsuchen
Ansicht
Themen-Optionen

Registry - Woher TimeStamp nehmen?

Ein Thema von Alter Mann · begonnen am 11. Jan 2010 · letzter Beitrag vom 12. Jan 2010
Antwort Antwort
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Registry - Woher TimeStamp nehmen?

  Alt 11. Jan 2010, 20:46
Hallo,

ein gesundes neues Jahr.

Ein Frage: gibt es eine Möglichkeit, so wie bei Dateien und Verzeichnissen, die
Zeitstempel eines Registrierungsschlüssels auszulesen, wenn ja über welche API
würde es gehen?

Für Tipps, Hinweise und Beispiele wie immer dankbar

Alter Mann
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Registry - Woher TimeStamp nehmen?

  Alt 11. Jan 2010, 20:53
Du meist, wann ein Schlüssel erstellt oder geändert wurde? Meines Wissen gibt es das nicht. Aber wozu braucht man das?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Registry - Woher TimeStamp nehmen?

  Alt 11. Jan 2010, 20:54
Kann mich da Luckie nur anschließen. Zudem würde das diese Datenbank weiter unnötig aufblähen. Wenn du sowas brauchst, dann musst du eher selbst Einträge anlegen. Oder du steigst auf INI-Files (oder XML, oder oder oder...) um, da kannst du dann mit entsprechenden Daten umgehen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#4

Re: Registry - Woher TimeStamp nehmen?

  Alt 11. Jan 2010, 21:13
Dass es sehr wohl geht zeigt regedit:

Exportiert einfach den gewünschten Registry Wert als Text:

Code:
Schlüsselname: HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip
Klassenname: <KEINE KLASSE>
Letzter Schreibzugriff: 15.07.2008 - 20:07
Wert 0
  Name: Path
  Typ: REG_SZ
  Daten: C:\Program Files\7-Zip
Ich weiss aber nicht, ob dies irgend wie in einer API offengelegt ist.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Registry - Woher TimeStamp nehmen?

  Alt 11. Jan 2010, 21:15
Oh, das kannte ich noch nicht. Wieder was dazu gelernt. Aber dann muss es auch eine API geben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#6

Re: Registry - Woher TimeStamp nehmen?

  Alt 11. Jan 2010, 21:41
Zitat von Alter Mann:
Für Tipps, Hinweise und Beispiele wie immer dankbar
Hi, auch nachträglich ein Gutes!

Versuch mal dass.

Delphi-Quellcode:

program Project1;

  {$APPTYPE CONSOLE}
  
uses
  Windows,
  Messages,
  SysUtils,
  Registry;
  
var
  RegDate: TDateTime;
  RegKeyInfo: TRegKeyInfo;
  TimeZoneInfo: TTimeZoneInformation;

function DateTimeToLocalDateTime(DateTime: TDateTime): TDateTime;
begin
  case GetTimeZoneInformation(TimeZoneInfo) of
    TIME_ZONE_ID_STANDARD:
      Result := DateTime - (TimeZoneInfo.Bias / 60 / 24);
    TIME_ZONE_ID_DAYLIGHT:
      Result := DateTime - ((TimeZoneInfo.Bias +
        TimeZoneInfo.DaylightBias) / 60 / 24);
    else
      Result := 0;
  end;
end;

procedure FileTimeToDateTime(ft: TFileTime; var dt: TDateTime);
var
  SystemTime: TSystemTime;
  FileTime: TFileTime;
begin
  if FileTimeToLocalFileTime(ft, FileTime) then begin
    FileTimeToSystemTime(ft, SystemTime);
    dt := SystemTimeToDateTime(SystemTime);
  end;
end;

begin
  with TRegistry.Create do begin
    RootKey := HKEY_CURRENT_USER;
    OpenKey('HKEY_CURRENT_USER\Software\Microsoft\Windows', False);
    GetKeyInfo(RegKeyInfo);
    with RegKeyInfo do begin
      FileTimeToDateTime(FileTime, RegDate);
      RegDate := DateTimeToLocalDateTime(RegDate);
    end;
    writeln(DateTimeToStr(RegDate));
    CloseKey;
  end;
  readln;
end.

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Registry - Woher TimeStamp nehmen?

  Alt 12. Jan 2010, 08:12
MSDN Registry Functions -> RegEnumKeyEx, RegQueryInfoKey

RegQueryInfoKey verwendet Luckie in seinem Win32Api Tut. Jedoch nur um zu sehen, ob der Eintrag existiert.

Sonst wie Astat schrieb:

http://www.swissdelphicenter.ch/de/showcode.php?id=2034
http://pasotech.altervista.org/delphi/articolo6.htm
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Registry - Woher TimeStamp nehmen?

  Alt 12. Jan 2010, 11:34
Hallo

Erst einmal vielen Dank.

Das Beispiel von Astat funktioniert soweit.

Doch wie sieht es aus, wenn der Schlüssel in dieser Form:
Zitat:
'\SYSTEM\MountedDevices\\??\Volume{3028b152-8305-11dd-89c8-806d6172696f}'
vorliegt?

Durch das '\\' kann er nicht auf den Schlüssel zugreifen.

Jemand eine Idee?

Alter Mann
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Registry - Woher TimeStamp nehmen?

  Alt 12. Jan 2010, 12:05
Key: '\SYSTEM\MountedDevices\'
Value: '\??\Volume{3028b152-8305-11dd-89c8-806d6172696f}' (REG_BINARY)

Bei RegQueryValueEx gibt keine Zeit.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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