Конференция "WinAPI" » Запуск процесса под юзером... [D7]
 
  • istok (26.02.10 12:30) [0]
    использую следующий код чтобы запустить процесс под учеткой текущего юзера (управляющий процесс работает под system):


    function RunProcessAsCurrentUser(FileName: string): Boolean;
    var
     ProcessId: Integer;
     hWindow, hProcess, TokenHandle: THandle;
     si: Tstartupinfo;
     p: Tprocessinformation;
    begin
       Result := False;
       hWindow := FindWindow('Progman', 'Program Manager');
       GetWindowThreadProcessID(hWindow, @ProcessID);
       hProcess := OpenProcess (PROCESS_ALL_ACCESS, FALSE, ProcessID);
       if OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, TokenHandle) then
       begin

         FillChar(si,SizeOf(si),0);
         with Si do begin
           cb := SizeOf( Si);
           dwFlags := startf_UseShowWindow;
           wShowWindow := SW_NORMAL;
           lpDesktop := PChar('winsta0\default');
         end;

         Result :=  CreateProcessAsUser(TokenHandle, nil,
           PChar(FileName),
           nil, nil, false, Create_default_error_mode, nil, nil, si, p);
       end;
    end;



    проблема в том, что в win7 при включенном uac процесс запускается без админских привелегий. вопрос - что подправить, чтобы процесс запускался с этими привилегиями, которые есть у управляющего процесса.

    спасибо
  • Eraser © (26.02.10 21:44) [1]
    короче нужно запустить программу от имени системы, но в текущей терм. сессии?
  • Алексей4105 (28.02.10 16:57) [2]
    Можно добавить ключ реестра uac на разрашение запуска под админом.
    Найти ключ реестра можно запустив regedit поиск. До этого указать на запуск файла правой кнопкой запускать под админом и поиск в реестре наладить по названию файла.
 
Конференция "WinAPI" » Запуск процесса под юзером... [D7]
Есть новые Нет новых   [134432   +18][b:0][p:0.001]