Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизПростой вопрос Найти похожие ветки
← →
mr1Andersen (2006-03-28 23:21) [0]Простой вопрос, как перезагрузить комп, поставить на спящей и ждущий режимы, если команды:
ExitWindows(EW_RESTARTWINDOWS,0);
ExitWindows(EW_REBOOTSYSTEM,0);
ExitWindows(EW_EXITANDEXECAPP,0);
не дают результата.
← →
kami © (2006-03-28 23:33) [1]Дают результат, если использовать их не в сервисе.
Только нужно получить права SeShutdownPrivilege
← →
Rial (2006-03-29 01:27) [2]Попробуй использовать "%SYSTEMROOT%\system32\shutdown.exe"
← →
AbrosimovA (2006-03-29 08:39) [3]
function MyExitWindows(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;
Вызов этой функции:MyExitWindows(EWX_POWEROFF); //Выключить
MyExitWindows(EWX_REBOOT); //Перезагрузить
MyExitWindows(EWX_LOGOFF); //Сменить пользователя
← →
mr1Andersen (2006-03-31 01:36) [4]Большое спасибо AbrosimovA.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c