Решение от Raymond Chen, с которым вы связались, может быть легко переведено на Delphi, хотя механизмы в Delphi имеют несколько разные имена и синтаксис.
Документация для ISystemInformation говорит:
Вы можете создать экземпляр этого интерфейса, используя кокласс SystemInformation .Используйте Microsoft.Update.SystemInfo программный идентификатор для создания объекта.
Пример:
program CheckRebootRequired;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, Winapi.ActiveX, System.Win.ComObj, System.Variants;
procedure Main;
var
SysInfo: OleVariant;
RebootRequired: OleVariant;
begin
SysInfo := CreateOleObject('Microsoft.Update.SystemInfo');
if not VarIsNull(SysInfo) then
begin
RebootRequired := SysInfo.RebootRequired;
Writeln('Reboot required = ', RebootRequired);
end
else
Writeln('Could not get Update SystemInfo');
end;
begin
CoInitialize(nil);
try
try
Main;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
finally
CoUninitialize;
end;
Readln;
end.