Форум: "Система";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизЗапуск приложения с правами пользователя, который вошёл в систему Найти похожие ветки
← →
Terrible (2002-09-24 16:09) [0]Есть сервис (который исполняется с правами LocalSystem). И вот ему по определённому событию надо запустить приложение (на данный момент пользуюсь WinExec). Но приложение тоже запускается с правами LocalSystem. А как бы сделать, что бы оно запускалось с правами пользователя, который сделал LogOn в систему.
Причём что самое интересное, как это сделать на Delphi. Буду очень благодарен за примерчик.
← →
Song (2002-09-24 16:24) [1]CreateProcessAsUser()
← →
ZZ (2002-09-24 16:24) [2]Получай PID юзерского процесса и
function GetUserContext(dwPid : Cardinal):Boolean;
var
hProc : THandle;
hToken : THandle;
User : array [0..100] of Char;
cbUser : Cardinal;
begin
Result:=false;
hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,dwPid);
if hProc = 0 then Exit;
if not OpenProcessToken(hProc,TOKEN_DUPLICATE or TOKEN_QUERY ,hToken)
then Exit;
if not ImpersonateLoggedOnUser(hToken)
then Exit;
// С этого момента код будет выполняться в
// Контексте пользователя, под которым запущен
// процесс c PID = dwPID
cbUser:=100;
GetUserName(User,cbUser);
ShowMessage(User);
RevertToSelf;
// Теперь снова работаем под системой
cbUser:=100;
GetUserName(User,cbUser);
ShowMessage(User);
Result:=true;
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c