![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выключение или перезагрузка компа через ExitWindowsEx?
WhiteBarin © (2006-11-17 13:59:00)Проблема в том что на одном компе работает на другом нет из-зи чего может быть это?
HF-Trade (2006-11-20 18:18:00) [1]procedure PowerOff(Flags: UINT);
var
tokenPriv: TTokenPrivileges;
tokenHandle: THandle;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) and
((Flags and (EWX_POWEROFF or EWX_REBOOT or EWX_SHUTDOWN)) <> 0) then
begin
if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,
TokenHandle) then begin
if LookupPrivilegeValue(nil,'SeShutdownPrivilege',
TokenPriv.Privileges[0].LUID) then
begin
TokenPriv.PrivilegeCount:=1;
TokenPriv.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if not AdjustTokenPrivileges(TokenHandle,false,TokenPriv,0,
TTokenPrivileges(nil^),DWORD(nil^)) then exit;
end;
end;
end;
ExitWindowsEx(Flags, 0);
end;
Перезагрузка -
PowerOff(EWX_REBOOT);
Выключение -
PowerOff(EWX_ShutDown);
Dmitrij_K (2006-11-20 10:45:00) [2]В гугл товарищЪ
WhiteBarin (2006-11-20 09:34:00) [3]Вызывается просто по нажатию кнопки
Перезагрузить
ExitWindowsEx(ewx_reboot,0);
Выключить
ExitWindowsEx(ewx_shutdown,0);
Все в одной ОС WinXP. А вот про привилегии не знал, как все это реализовать чтобы везде работало, т.е. на всех компах с XP
clickmaker (2006-11-17 15:14:00) [4]кроме того, привилегии нужны процессу, чтоб погасить винду или комп.
см. AdjustTokenprivileges
Кстати, в Инете много примеров на эту тему
Джо (2006-11-17 15:04:00) [5]> из-зи чего может быть это?
Много из-за чего. Например, из-за разных ОС. В 98 дескриптор безопасности можно не получать, в NT — обязательно.
Лучше свой код покажи, укажут где ошибка.
Elen (2006-11-17 14:00:00) [6]
> WhiteBarin
Как вызывается? где?