Конференция "Corba" » Удалённый запуск приложений через WMI [Delphi, Windows]
 
  • AbrosimovA © (15.05.06 12:52) [0]
    Кто-нибудь знает ответ на вопрос: "Почему приложения, которые я запускаю удалённо на другой машине посредством WMI, не отображаются, хотя видны в менеджере задач? Как с этим бороться?"
  • umbra © (19.05.06 16:29) [1]
    а где они должны отображаться?
  • AbrosimovA © (22.05.06 08:25) [2]
    Поверх рабочего стола.
  • umbra © (22.05.06 10:22) [3]
    не видны они, скорее всего, потому, что не привязяны ни к одной интерактивной сессии и поэтому нет рабочего стола, поверх которого они должны отображаться
  • AbrosimovA © (22.05.06 11:20) [4]
    А как же привязать к интерактивной сессии или это невозможно в-принципе для удалённого запуска.

    function TMainForm.StartApplication(strServer: string; const Command: string): boolean;
    var
    ObjWMI: OleVariant;
    ObjProcess,ProcessID: OleVariant;
    ObjConfig: OleVariant;
    Error: OleVariant;
    begin
    Result:=False;
    ObjWMI:=GetObject('Winmgmts:{impersonationLevel=impersonate}!'+strServer+'\root\cimv2');
    ObjProcess:= objWMI.Get('Win32_Process');
    ObjConfig:=objWMI.Get('Win32_ProcessStartup').SpawnInstance_;
    ObjConfig.ShowWindow:=SW_NORMAL;
    ObjConfig.WinstationDesktop:=Здесь что указывать;
    Error:=ObjProcess.Create(Command,,ObjConfig,ProcessID);
    if Error = 0 then
     begin
       Caption:=IntToStr(ProcessID);
       Sleep(300);
       Result:=True;
       SetForegroundWindow(MainForm.Handle);
     end
     else
       MessageBox(0, PChar('Не удалось запустить приложение.'),
                  PChar(MainForm.Caption), MB_OK);
    end;

  • umbra © (22.05.06 13:44) [5]

    > А как же привязать к интерактивной сессии или это невозможно
    > в-принципе для удалённого запуска.

    невозможно. Вот цитат из МСДН

    Создание Процессов на удаленных машинах

    Вы можете использовать Win32_Process.Create, чтобы выполнить скрипт или программу на удаленном компьютере. Однако, из соображений безопасности, процесс не может быть интерактивным. Когда Win32_Process.Create вызывается на локальным компьютере, процесс может быть интерактивным.

    Удаленный процесс не имеет пользовательского интерфейса, но виден в списке процессов Менеджера Задач.

    .....................

    Чтобы удаленно создать интерактивный процесс Вы можете использовать
    Win32_ScheduledJob.Create. Однако, Win32_ScheduledJob.Create создает процессы от имени учетной записи LocalSystem, что может привести к получению процессом слишком больших прав.
  • AbrosimovA © (22.05.06 13:57) [6]
    Спасибо!
 
Конференция "Corba" » Удалённый запуск приложений через WMI [Delphi, Windows]
Есть новые Нет новых   [119105   +99][b:0][p:0.001]