![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выход из Windows [D7, WinXP]
NavigatorV © (2003-12-02 19:28:00)Как програмно завершить работу в Windows XP (т.е. Power Off)
YuRock (2003-12-29 14:29:00) [1]Вот рабочий вариант:
Uses Windows, SysUtils;
procedure ExitWnd;
var
hToken : THANDLE;
tkp : TTokenPrivileges;
rl : DWORD;
begin
OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken);
if not (LookupPrivilegeValue(nil, LPSTR('SeShutdownPrivilege'), tkp.Privileges[0].Luid)) then
begin
MessageBox(0, 'Нет локальных привилегий', '', MB_ICONSTOP);
Exit;
end;
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);
if not (LookupPrivilegeValue(nil, LPSTR('SeRemoteShutdownPrivilege'), tkp.Privileges[0].Luid)) then
begin
MessageBox(0, 'Нет сетевых привилегий', '', MB_ICONSTOP or MB_TASKMODAL);
Exit;
end;
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);
if not ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0) then
MessageBox(0, 'Что-то не то...', '', MB_ICONSTOP or MB_TASKMODAL);
end.
tesseract (2003-12-29 13:42:00) [2]BOOL ExitWindowsEx(
UINT uFlags,
DWORD dwReason
);
UFlags:
EWX_LOGOFF:
EWX_POWEROFF
EWX_REBOOT
EWX_SHUTDOWN
dwReason - на фиг не нужен.
BOOL InitiateSystemShutdownEx(
LPTSTR lpMachineName,
LPTSTR lpMessage,
DWORD dwTimeout,
BOOL bForceAppsClosed,
BOOL bRebootAfterShutdown,
DWORD dwReason
);
только Winnt/WinXP
Рамиль (2003-12-29 09:57:00) [3]В XP все решается проще. Есть такая программка стандартная
shutdown.exe, можно даже завершить работу удаленного компа.
Guest (2003-12-28 21:45:00) [4]Есть примеры!!! Отключается XP даже VB скриптом, кому надо, мыльте ilya2003@ezmail.ru.
Smoke (2003-12-16 17:10:00) [5]1.Дать процессу привелегию SeShutdownName
2.HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\PowerdownAfterShutdown=1
3.ExitWindowex EWX_FORCE | EWX_SHUTDOWN,0
Anatoly Podgoretsky (2003-12-02 19:44:00) [6]http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N162