المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : معرفه تاريخ تنصيب الوندوز


خدم الحسين
10-08-2010, 12:38 AM
أين الخطأ في هذا الكود

function getinstalldate: String;
var
di: Longint;
buf: Array [ 0..3 ] of byte;
begin
result := 'unknown';
with tregistry.create do
begin
rootkey := hkey_local_machine;
lazywrite := true;
openkey ( '\software\microsoft\windows nt\currentversion', false );
di := readbinarydata ( 'installdate', buf, sizeof ( buf ) );
// result := datetimetostr ( filedatetodatetime ( buf [ 0 ] + buf [ 1 ] * 256 + buf [ 2 ] * 65535 + buf [ 3 ] * 16777216 ) );
showmessage(inttostr(di));
free;
end;
end;

انه لمعرفه تاريخ تنصيب الوندوز عندما استخدمه يظهر خطأ لماذا؟؟

kachwahed
10-08-2010, 05:46 PM
السلام عليكم
الخطأ بسبب نوع البيانات ليس Binary وإنما DWORD يمكن قراءته بـ ReadInteger
uses
Registry, DateUtils;

Function GetWindowsInstallDate: String;
var
Reg : TRegistry;
StartDate : TDateTime;
ThePC : String;
begin
Reg := TRegistry.Create();
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.RegistryConnect(ThePC) then
begin
REG.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', False);
StartDate := EncodeDateTime(1970,1,1,0,0,0,0);
Result := DateToStr(IncSecond(StartDate,Reg.ReadInteger('Ins tallDate')));
Reg.CloseKey;
end;
finally
FreeAndNil(Reg);
end;
end;