28.10.2010, 12:59
|
|
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
xp, vista, 7 ExitWindowsEx(EWX_SHUTDOWN, 0) не выключит!
WindowsShutdown:
Код:
function EnableShutdownPrivledges: Boolean;
var
hCurrentProcess: THandle;
hTokenHandle: THandle;
tp: _TOKEN_PRIVILEGES;
PreviousState: _TOKEN_PRIVILEGES;
ReturnLength: Cardinal;
begin
hCurrentProcess:=GetCurrentProcess;
if OpenProcessToken(hCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hTokenHandle) then
begin
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid) then
begin
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hTokenHandle, False, tp, SizeOf(_TOKEN_PRIVILEGES), PreviousState, ReturnLength) then Result:=True else Result:=False;
end else Result:=False;
end else Result:=False;
end;
function IsNT: Boolean;
var
osv: _OSVERSIONINFOA;
begin
ZeroMemory(@osv, SizeOf(_OSVERSIONINFOA));
osv.dwOSVersionInfoSize:=SizeOf(_OSVERSIONINFOA);
if GetVersionEx(osv) then
begin
if (osv.dwPlatformId=VER_PLATFORM_WIN32_NT) and (osv.dwMajorVersion>4) then Result:=True else Result:=False;
end else Result:=False;
end;
function WindowsShutdown: Boolean;
begin
if IsNT then
begin
if EnableShutdownPrivledges then Result:=ExitWindowsEx(EWX_SHUTDOWN, 0) else Result:=False;
end else Result:=ExitWindowsEx(EWX_SHUTDOWN, 0)
end;
__________________
Пишу программы за еду.
__________________
|