![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос о функции AdjustTokenPriveleges [D7, WinXP]
IKvasnitsky © (2003-06-10 11:41:00)Господа Мастера,
подскажите как правильно использовать функцию ExitWindowsEx в WindowsXP, чтобы выключить комп (EWX_SHUTDOWN).
Насколько я понял, надо установить привелегии с помощью AdjustTokenPrivileges,
но не смог разобраться КАК применить эту функцию.
Если не трудно приведите пример синтаксиса.
default (2003-06-11 00:03:00) [1]function ExitWindowsEx_(uFlags: Cardinal): Boolean;
function GetNeedPrivilege: Boolean;
var
tpnew: _TOKEN_PRIVILEGES;
luid: Int64;
rl, th: Cardinal;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, th) then
if LookupPrivilegeValue(nil, "SeShutDownPrivilege", luid) then begin
tpnew.PrivilegeCount := 1;
tpnew.Privileges[0].Luid := luid;
tpnew.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Result := AdjustTokenPrivileges(th, False, tpnew, 0, nil, rl)
end
end;
var
vi: OSVERSIONINFO;
begin
Result := False;
vi.dwOSVersionInfoSize := SizeOf(vi);
GetVersionEx(vi);
if (vi.dwPlatformId = VER_PLATFORM_WIN32_NT) and (uFlags <> EWX_FORCE)
and (uFlags <> EWX_LOGOFF) then if not GetNeedPrivilege then Exit;
Result := ExitWindowsEx(uFlags, 0)
end;
я так писал)с проверкой платформы
IKvasnitsky (2003-06-10 13:02:00) [2]Спасибо, нашел. Хотя перед написанием вопроса искал и получил ответ, что ничего не найдено...
Игорь Шевченко (2003-06-10 11:42:00) [3]FAQ