Может ли .NET проверять параметры командной строки других запущенных программ?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

У нас есть интересный случай, когда мы пытаемся определить, как были запущены различные экземпляры нашего приложения.Есть ли какой-либо способ, чтобы .NET мог запросить другой запущенный экземпляр и получить параметры командной строки, переданные этому экземпляру?До сих пор мне не удалось найти какой-либо способ сделать это в .NET, поэтому я подумал, что проверю здесь, делал ли кто-нибудь что-нибудь подобное раньше.

Это было полезно?

Решение

Вы можете получить эту информацию через WMI.

Посмотрите на Win32_Process - процесс класс, в частности его свойство командной строки.Это Статья проекта Кода содержит указания о том, как это сделать,

Другие советы

Как правило, эти переменные хранятся в памяти программы, к которой вы (теоретически) не должны иметь доступа.

Вам нужно будет выяснить, как инициировать межпроцессное взаимодействие с другими экземплярами и торговыми данными.Именованные каналы - один из хороших вариантов, но вы можете захотеть запустить новый вопрос stackoverflow, чтобы получить хорошие варианты по этому вопросу.

-Адам

Для дальнейшего использования, вот фрагмент кода из того, как я заставил это работать.Это было просто для проверки, чтобы посмотреть, как все это работает.Фактически реализованный код анализирует параметры командной строки для того, что нам нужно.

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) 
      {}
   }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top