Форум: "WinAPI";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизПолучение уровня привелегий процесса Найти похожие ветки
← →
AngelFire (2005-09-01 18:01) [0]Уважаемые Мастера и подмастерья!
Не подскажете, каким образом можно (программно!) получить уровень привелегий запущенного процесса, имея в наличии только хэндл процесса, и, при необходимости, поднять уровень привилегий процесса? А также, каким образом запустить процесс/изменить параметры запущенного чтобы он выполнялся с правами конкретного пользователя (чаще всего, администратора)?
← →
Игорь Шевченко © (2005-09-01 18:07) [1]
> Не подскажете, каким образом можно (программно!) получить
> уровень привелегий запущенного процесса, имея в наличии
> только хэндл процесса
OpenProcessToken, GetTokenInformation (...TOKEN_PRIVILEGE...)
> и, при необходимости, поднять уровень привилегий процесса?
>
function HSEnablePrivilege (const PrivilegeName: String): Boolean;
var
LUID: TLargeInteger;
Priv: TTokenPrivileges;
AccessToken: THandle;
ReturnLen: Cardinal;
begin
Result := OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, AccessToken);
if not Result then
Exit;
Result := LookupPrivilegeValueA(nil, PChar(PrivilegeName), LUID);
if not Result then //Привилегия не нашлась
Exit;
Priv.PrivilegeCount := 1;
Priv.Privileges[0].Luid := LUID;
Priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Result := AdjustTokenPrivileges(AccessToken, false, Priv,
SizeOf(TTokenPrivileges), nil, ReturnLen);
end;
> А также, каким образом запустить процесс/изменить параметры
> запущенного чтобы он выполнялся с правами конкретного пользователя
> (чаще всего, администратора)?
Запустить через Runas.
Изменить параметры запущенного - Windows вообще-то не дураки писали.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c