![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в WinXP выключить компьютер [D5, WinXP]
DenKop © (2002-08-29 16:17:00)Ни ExitWindows, ни ExitWindowsEx не работают. Вычитал в хелпе что нужно изменить уровень привелегий, но это не помогло.
melifaro (2002-09-02 01:28:00) [1]в XPкак в NT- сначало надо дать приложению привилегиюна выключение.
Пример:
Function GrantShutdownAccess: boolean;А потом уже можно включать компьютер -
var
hToken: THandle;
lpVersionInformation: TOSVersionInfo;
tkp: TTokenPrivileges;
RetLen: DWORD;
PreviousState: TTokenPrivileges;
begin
lpVersionInformation.dwOSVersionInfoSize := SizeOf(lpVersionInformation);
Result := GetVersionEx(lpVersionInformation);
if (lpVersionInformation.dwPlatformId = VER_PLATFORM_WIN32_NT) then
begin
if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
Result := False;
exit;
end;
Result := LookupPrivilegeValue( Nil, "SeShutdownPrivilege",
tkp.Privileges[0].Luid);
if not Result then Exit;
PreviousState := tkp;
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if not(AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(PreviousState), PreviousState, RetLen)) then
begin
Result := False;
Exit;
end;
end;
Result := True;
end;
if GrantShutdownAccess then ExitWindowsEx (EWX_FORCE and EWX_SHUTDOWN,0);
Беня Ладен (2002-09-02 01:04:00) [2]Start->Turn off Computer->Turn off !!! :)))
Квазиравномернонепрерывный (2002-08-29 16:43:00) [3]В debug API есть ф-я, которая показывает диаложек "Перезагрузить комп сейчас?..." и если user32 ответил Да, перегружает виндовоз.