Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > как в CreateProcess задать имя рабочего стола?


Автор: dream2work 9.12.2009, 20:03
Для запуска процесса из сервиса - использую следующий код.
Код

  var
    hToken: THandle;
    si: STARTUPINFOA;
    pi: PROCESS_INFORMATION;     
  ...
       if WTSQueryUserToken(WtsGetActiveConsoleSessionID, hToken) then
       begin
         ZeroMemory(@si, SizeOf(si));
         si.cb := SizeOf(si);
         si.lpDesktop := nil;
         CreateProcessAsUser(hToken, nil, PANSIChar(_FILENAME), nil, nil, False, 0, nil, nil, si, pi)
       end;

Все работает хорошо - но мне нужно запустить процесс от имени SYSTEM на рабочем столе текущего пользователя
Вопрос как задать имя рабочего стола?
Код

       if WTSQueryUserToken(WtsGetActiveConsoleSessionID, hToken) then
       begin
         ZeroMemory(@si, SizeOf(si));
         si.cb := SizeOf(si);
         si.lpDesktop := ? // имя рабочего стола
         CreateProcess(nil, PANSIChar(_FILENAME), nil, nil, False, 0, nil, nil, si, pi)
       end;


Автор: bems 10.12.2009, 01:20
ну попробуй WinSta0\Default

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)