Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизПомогите пожалуйста с проблемой выключения компа. Найти похожие ветки
← →
NOX (2004-06-26 14:50) [0]Вызываю ExitWindowsEx( EWX_POWEROFF, 0 ) или с флагом EWX_SHUTDOWN, но ничего не происходит, а если поставить флаг EWX_FORCE , то происходит просто завершение сеанса, а не включение. В чём дело.
Спасибо.
← →
GuAV © (2004-06-26 14:55) [1]
> ExitWindowsEx( EWX_POWEROFF, 0 ) или с флагом EWX_SHUTDOWN,
"или" нужно делать так EWX_SHUTDOWN or EWX_POWEROFF :)
← →
Knight © (2004-06-26 23:09) [2]Кстати, может кто знает... тут у Radmina на Win2k такой глюк. Даю команду выключить удалённый комп, он начинает завершать свою работу, затем идёт такой звук как при прямом выключении, т.е. замолкает винт, куллера, гаснет монитор, но... пости сразу (в полной тишине) заграется снова и на нём появляется надпись "Теперь питание компьютера можно выключить"... Почему?
← →
ПсихЪ_клон (2004-06-26 23:19) [3]Я юзаю вот такую функцию:
function P7ExitWindows( RebootParam : Longword ) : boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: boolean;
const
SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
Использование:
P7ExitWindows( EWX_POWEROFF or EWX_FORCE );
← →
DeadMeat © (2004-06-27 00:04) [4]> [2] Knight © (26.06.04 23:09)
Тоже заметил, поэтому делаю Switch off вместо Shutdown...
P.S. А где ты раздобыл руссификатор...??
---
...Death Is Only The Begining...
← →
Knight © (2004-06-27 00:48) [5]> DeadMeat © (27.06.04 00:04) [4]
> Тоже заметил, поэтому делаю Switch off вместо Shutdown...
Надо будет попробовать.
>P.S. А где ты раздобыл руссификатор...??
Для чего? Если для Radmina, то я вроде нигде не писал, что он русский.
← →
DeadMeat © (2004-06-27 16:13) [6]> [5] Knight © (27.06.04 00:48)
> Для чего? Если для Radmina, то я вроде нигде не писал, что он русский.
Ааа... Просто меня вот это смутило -
Даю команду выключить удалённый комп
---
...Death Is Only The Begining...
← →
YuRock © (2004-06-27 16:24) [7]> Вызываю ExitWindowsEx( EWX_POWEROFF, 0 ) или с флагом EWX_SHUTDOWN, но ничего не происходит
Естественно - нужно ведь привелегии вначале получить... Вот:
function ExitWindows: Boolean;
var
hToken : THANDLE;
tkp : TTokenPrivileges;
rl : DWORD;
begin
Result := False;
OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken);
if not (LookupPrivilegeValue(nil, LPSTR("SeShutdownPrivilege"), tkp.Privileges[0].Luid)) then begin
MessageBox(0, "Не достаточно прав", "Ошибка", MB_ICONERROR);
Exit;
end;
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);
Result := ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
← →
Knight © (2004-06-27 19:49) [8]
> [6] DeadMeat © (27.06.04 16:13)
> Ааа... Просто меня вот это смутило -
> Даю команду выключить удалённый комп
Тогда бы было так - Даю команду "Выключить удалённый комп"... :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c