Ответы пользователя по тегу API
  • Как в Delphi запустить процесса из сервиса?

    @terminator48 Автор вопроса
    Ладно, всем спасибо за ответы, но я сам уже нашёл решение:

    uses JwaWindows, JwsclToken, JwsclSid, JwsclStrings
    procedure RunApp(str: string);
    var
      UserToken : TJwSecurityToken;
      ConsoleUser : TJwSecurityId;
      UserSidString,
      UserName : TJwString;
    struc1: LPSTARTUPINFO;
    struc2: PROCESS_INFORMATION;
    begin
    
    getmem(struc1, sizeof(TSTARTUPINFO));
    
    struc1^.lpDesktop := PChar('winsta0\default');
    struc1^.dwFlags := STARTF_USESHOWWINDOW;
    struc1^.wShowWindow := SW_SHOW;
      UserToken := TJwSecurityToken.CreateWTSQueryUserToken(WTS_CURRENT_SESSION);
      CreateProcessAsUser(UserToken.TokenHandle, nil,
          PChar(str+' 1000'),
           nil, nil, false, Create_default_error_mode, nil, nil, struc1^, struc2);
        UserToken.RevertToSelf;
      FreeAndNil(UserToken);
    end;
    Ответ написан
    Комментировать