uses
Windows, messages;
...
procedure RebootSystem(Flags: UINT);
var
handle_: THandle;
n: DWORD;
luid: TLargeInteger;
priv: TOKEN_PRIVILEGES;
ver: TOSVERSIONINFO;
begin
ver.dwOSVersionInfoSize := Sizeof(ver);
GetVersionEx(ver);
if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then
begin
if OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES, handle_) then
if LookupPrivilegeValue(nil,'SeShutdownPrivilege'
, luid) then
begin
priv.PrivilegeCount := 1;
priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
priv.Privileges[0].Luid := luid;
AdjustTokenPrivileges(handle_, false, priv, 0, nil, n);
end
end;
if not ExitWindowsEx(Flags,1) then writeln('Ошибка'
);
end;
RebootSystem(EWX_REBOOT);// для перезагрузки
RebootSystem(EWX_POWEROFF);// для выключения
Просмотров: 6834
Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.
Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.
Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.