Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение даты и времени последнего запуска системы в Windows 2008/2003 с помощью Delphi

Delphi , ОС и Железо , Windows

Вопрос о том, как получить дату и время последнего запуска системы в Windows 2008/2003 через Delphi, является актуальным для разработчиков, работающих с этой операционной системой. В командной строке Windows можно использовать команду net statistics, но существует более удобный способ получения этой информации непосредственно из программы на Delphi.

Подходы к решению задачи

Существуют различные способы получения даты и времени последнего запуска системы. Одним из них является использование функции GetTickCount, которая возвращает количество миллисекунд, прошедших с момента последнего запуска системы. Однако, этот метод имеет ограничение, так как GetTickCount возвращает 32-битное значение, что приводит к переполнению примерно через 49.7 дней работы системы.

В Windows Vista и выше можно использовать функцию GetTickCount64, которая решает проблему переполнения. Однако, для старых систем, таких как Windows 2003, этот метод не подходит.

Другой способ — использование счетчика "System Up Time" в реестре, который также может быть использован, но требует более сложных манипуляций с данными реестра.

Альтернативный ответ с использованием WMI

Одним из проверенных решений является использование свойства LastBootUpTime класса Win32_OperatingSystem из WMI (Windows Management Instrumentation). Этот класс предоставляет информацию о системе, включая дату и время последнего запуска.

Пример кода на Delphi

Ниже представлен пример кода, который демонстрирует, как можно получить дату и время последнего запуска системы через WMI в Delphi:

program LastBootTime;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  ActiveX,
  Variants,
  ComObj;

function UtcToDateTime(const V: OleVariant): TDateTime;
var
  Dt: OleVariant;
begin
  Result := 0;
  if VarIsNull(V) then
    exit;
  Dt := CreateOleObject('WbemScripting.SWbemDateTime');
  Dt.Value := V;
  Result := Dt.GetVarDate;
end;

procedure GetWin32_OperatingSystemInfo;
var
  FSWbemLocator: OLEVariant;
  FWMIService: OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject: OLEVariant;
  oEnum: IEnumvariant;
  iValue: LongWord;
begin
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet := FWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem', 'WQL', 0);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  if oEnum.Next(1, FWbemObject, iValue) = 0 then
  begin
    Writeln(Format('Last BootUp Time: %s', [FormatDateTime('dd-mm-yyyy hh:nn:ss', UtcToDateTime(FWbemObject.LastBootUpTime))]));
  end;
end;

begin
  try
    CoInitialize(nil);
    try
      GetWin32_OperatingSystemInfo;
    finally
      CoUninitialize;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  ReadLn;
end.

Этот код использует WMI для получения информации о последнем запуске системы. Он преобразует значение LastBootUpTime, которое возвращается в формате UTC, в локальное время с помощью функции UtcToDateTime.

Заключение

Для получения даты и времени последнего запуска системы в Windows 2008/2003 с помощью Delphi, можно использовать различные методы, включая функцию GetTickCount64 для систем, поддерживающих её, или же воспользоваться WMI для получения точной информации через свойство LastBootUpTime класса Win32_OperatingSystem. Выбор метода зависит от конкретных требований и условий использования.

Создано по материалам из источника по ссылке.

Вопрос связан с получением даты и времени последнего запуска системы Windows 2008/2003 через Delphi, с обзором различных методов и примером использования WMI для этой задачи.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 17:10:08/0.003309965133667/0