Собственно вопрос мой звучит также как и название темы как же средствами делфи узнать дату установки виндовс или сколько дней она уже в работе?
Решение:
1)
В Реестре Windows (см. Что такое Реестр Windows?) дата установки операционной системы хранится в шестнадцатеричном виде в разделе
[HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows NT\CurrentVersion] в REG_DWORD-параметре InstallDate, например, 45e19ed9 (1172414169), в скобках указано десятичное число.
Параметр InstallDate показывает количество секунд, прошедших с 1 января 1970 г. до момента установки операционной системы.
cmd -> systeminfo>temp.tmp дальше парсить temp.tmp
2) из библиотеки Abbrevia, модуль AbUtils.pas
{ date and time stuff } const Date1900 {: LongInt} = $0001AC05; {Julian day count for 01/01/1900 -- TDateTime Start Date} Date1970 {: LongInt} = $00020FE4; {Julian day count for 01/01/1970 -- Unix Start Date} Unix0Date: TDateTime = 25568; {Date1970 - Date1900} SecondsInDay = 86400; {Number of seconds in a day} SecondsInHour = 3600; {Number of seconds in an hour} SecondsInMinute = 60; {Number of seconds in a minute} HoursInDay = 24; {Number of hours in a day} MinutesInHour = 60; {Number of minutes in an hour} MinutesInDay = 1440; {Number of minutes in a day} function AbUnixTimeToDateTime(UnixTime : LongInt) : TDateTime; function AbDateTimeToUnixTime(DateTime : TDateTime) : LongInt; function AbUnixTimeToDateTime(UnixTime : LongInt) : TDateTime; { convert unix date to Delphi TDateTime } var Hrs, Mins, Secs : Word; TodaysSecs : LongInt; begin TodaysSecs := UnixTime mod SecondsInDay; Hrs := TodaysSecs div SecondsInHour; TodaysSecs := TodaysSecs - (Hrs * SecondsInHour); Mins := TodaysSecs div SecondsInMinute; Secs := TodaysSecs - (Mins * SecondsInMinute); Result := Unix0Date + (UnixTime div SecondsInDay) + EncodeTime(Hrs, Mins, Secs, 0); end; { -------------------------------------------------------------------------- } function AbDateTimeToUnixTime(DateTime : TDateTime) : LongInt; { convert Delphi TDateTime to unix date } var Hrs, Mins, Secs, MSecs : Word; Dt, Tm : TDateTime; begin Dt := Trunc(DateTime); Tm := DateTime - Dt; if Dt < Unix0Date then Result := 0 else Result := Trunc(Dt - Unix0Date) * SecondsInDay; DecodeTime(Tm, Hrs, Mins, Secs, MSecs); Result := Result + (Hrs * SecondsInHour) + (Mins * SecondsInMinute) + Secs; end;