O .NET pode verificar os parâmetros de linha de comando de outros programas em execução?

StackOverflow https://stackoverflow.com/questions/44260

  •  09-06-2019
  •  | 
  •  

Pergunta

Temos um caso interessante em que tentamos determinar como diferentes instâncias do nosso aplicativo foram iniciadas.Existe alguma maneira do .NET consultar outra instância em execução e obter os parâmetros da linha de comando passados ​​​​para essa instância?Não consegui encontrar nenhuma maneira de fazer isso no .NET até agora, então pensei em verificar aqui se alguém já havia feito algo assim antes.

Foi útil?

Solução

Você pode recuperar essas informações por meio do WMI.

Veja o Win32_Process classe, em particular sua propriedade de linha de comando.Esse Artigo do projeto de código fornece dicas sobre como fazer isso,

Outras dicas

Geralmente essas variáveis ​​são armazenadas no espaço de memória do programa, que você (teoricamente) não deveria poder acessar.

Você precisará descobrir como iniciar a comunicação entre processos com outras instâncias e dados comerciais.Pipes nomeados são uma boa opção, mas você pode querer iniciar uma nova pergunta de stackoverflow para obter boas opções sobre isso.

-Adão

Para referência futura, aqui está um trecho de código de como fiz isso funcionar.Isso foi apenas para um teste para ver como tudo funcionava.O código realmente implementado analisa os parâmetros da linha de comando para o que precisamos.

try
{
   ManagementScope connectScope = new ManagementScope();
   connectScope.Path = new ManagementPath(@"\\" + Environment.MachineName + @"\root\CIMV2");

   SelectQuery msQuery = new SelectQuery("SELECT * FROM Win32_Process Where Name = '" + "PROGRAMNAMEHERE.exe" + "'");
   ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(connectScope, msQuery);

   foreach (ManagementObject item in searchProcedure.Get())
   {
      try 
      {
         MessageBox.Show(item["CommandLine"].ToString()); 
      }
      catch (SystemException) 
      {}
   }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top