none
Como executar um aplicativo remoto em foreground? RRS feed

  • Pergunta

  • Bom dia pessoal,

    Estou precisando executar um aplicativo em uma máquina remotamente, mas, preciso que a tela seja exibida para o usuário.  Utilizei a classe Win32_Process para fazer este trabalho, onde inclusive tenho a opção de sentar um parâmetro para exibir a tela, mas mesmo assim não funciona.

    O que pude perceber, é que sempre que utilizo a classe para executar o aplicativo em minha própria máquina, funciona 100%, mas, remotamente só rada em background.  Vou postar aqui o código que utilizo para analisarem.

    Será que alguémn teria alguma idéia ou sugestão de como alcançar meu objetivo, caso isto não seja possível com esta classe?

    Const SW_NORMAL = 1
    strComputer = "micro-teste"
    strCommand = "calc.exe" 
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    ' CONFIGURA O CAL PARA EXIBIR A TELA
    Set objStartup = objWMIService.Get("Win32_ProcessStartup")
    Set objConfig = objStartup.SpawnInstance_
    objConfig.ShowWindow = SW_NORMAL
    
    ' CRIA O PROCESSO DA CALCULADORA
    Set objProcess = objWMIService.Get("Win32_Process")
    intReturn = objProcess.Create (strCommand, Null, objConfig, intProcessID)
    If intReturn <> 0 Then
        Wscript.Echo "Processo não pode ser criado." & vbNewLine & "Linha de comando: " & strCommand & vbNewLine & "Valor de retorno: " & intReturn
    Else
        Wscript.Echo "Processo criado." & vbNewLine & "Linha de comando: " & strCommand & vbNewLine & "ID do Processo: " & intProcessID
    End If
    quinta-feira, 1 de outubro de 2009 13:18

Respostas

Todas as Respostas

  • Olá,


    Dá uma olhada no PSEXEC:

    http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx


    Com ele, você pode criar um script, conforme o exemplo abaixo:

    Set oShell= CreateObject("Wscript.Shell")

    strPrograma = "calc.exe"
    oShell.Run strPrograma,, True
     


    Salva o script em um compartilhamento e utiliza o psexec para executar:

    psexec \\computador -c \\server\compartilhamento\script.vbs



    Até mais,

    Jesiel

    Obs.: Se útil, classifique





     

    quinta-feira, 1 de outubro de 2009 14:31
  • Boa tarde Jesiel,

    Com o PSEXEC eu já consegui fazer, mas não queria justamente utilizar ferramenta externa para alcançar o objetivo.  Até mesmo porque, quando é a primeira vez que o PSEXEC é executado, temos que aceitar um termo e a partir da segunda vez ele irá funcionar sem esta mensagem.

    Como este script será utilizado em diversos equipamentos, também terei o problema de criar o serviço do PSEXEC em cada máquina destino.

    Sei que o que quero é bem complicado, até mesmo porque esta solução por script deve ser bem complexa.   Uma outra solução que encontrei, foi utilizar o agendador de tarefas para executar o comando que eu preciso, mas também parece um "arranjo" pra resolver um problema.

    Mesmo assim, desde já muito obrigado pela ajuda.

    quinta-feira, 1 de outubro de 2009 17:10
  • Olá,

    Quando você fala "utilizado em diversos equipamentos" você quer dizer varios administradores irão utilizar, ou você irá executar o aplicativo remoto em vários clientes?

    Se for a primeira opção... realmente, você terá que aceitar o termo...

    Mas não vejo muita opção não... Você terá que usar uma ferramenta não nativa para executar este código, ou fazer com o agendador de tarefas, ou o comando at.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    sexta-feira, 2 de outubro de 2009 12:51
  • Você pode tentar utilizar os procedimentos do link abaixo, (mas ainda prefiro o Psexec).

    How to execute program on remote computer?

    http://motevich.blogspot.com/2007/11/execute-program-on-remote-computer.html


    Fábio de Paula Junior

    segunda-feira, 5 de março de 2012 12:12
    Moderador