Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
unitMain; interface
uses
Windows, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry, StdCtrls, ComCtrls, ExtCtrls; type
TFrmMain = class
(TForm) Memo1: TMemo; btEnumReg: TButton; dtBeginDate: TDateTimePicker; dtEndDate: TDateTimePicker; dtBeginTime: TDateTimePicker; dtEndTime: TDateTimePicker; Panel1: TPanel; Label1: TLabel; Label2: TLabel; procedure
btEnumRegClick(Sender: TObject); private
{ Private declarations } RegDate: TDateTime; RegKeyInfo: TRegKeyInfo; TimeZoneInfo: TTimeZoneInformation; function
DateTimeToLocalDateTime(DateTime: TDateTime): TDateTime; procedure
FileTimeToDateTime(ft: TFileTime; var
dt: TDateTime); public
{ Public declarations } end
; var
FrmMain: TFrmMain; implementation
{$R *.dfm} function
TFrmMain.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
TFrmMain.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
; procedure
TFrmMain.btEnumRegClick(Sender: TObject); var
Inizio, Fine: TDateTime; procedure
EnumAllKeys(hkey: THandle; KeyName: string
); var
l: TStringList; n: Integer; KeyName_: string
; begin
KeyName_ := KeyName; with
TRegistry.Create do
try
RootKey := hkey; OpenKey(EmptyStr, False); l := TStringList.Create; try
GetKeynames(l); CloseKey; for
n := 0 to
l.Count - 1 do
begin
if
OpenKey(l[n], False) then
begin
GetKeyInfo(RegKeyInfo); with
RegKeyInfo do
begin
FileTimeToDateTime(FileTime, RegDate); RegDate := DateTimeToLocalDateTime(RegDate); end
; if
(RegDate <= Fine) and
(RegDate >= Inizio) then
memo1.Lines.Add(DateTimeToStr(RegDate) + ' --- ' + KeyName_ + '' + l[n]); EnumAllKeys(CurrentKey, KeyName_ + '' + l[n]); CloseKey; end
; end
; finally
l.Free end
; finally
Free; end
; end
; begin
Memo1.Clear; Memo1.Lines.BeginUpdate; Inizio := int(dtBeginDate.DateTime) + frac(dtBeginTime.DateTime); Fine := int(dtEndDate.Date) + frac(dtEndTime.DateTime); try
EnumAllKeys(HKEY_CURRENT_USER, 'HKey_Current_User'); finally
Memo1.Lines.EndUpdate; end
; MessageDlg('Enumeration ended', mtInformation, [mbOK], 0); end
; end
.