2008-09-04 5 views
2

Nous avons un cas intéressant où nous essayons de déterminer comment différentes instances de notre application ont été lancées. Existe-t-il un moyen pour .NET d'interroger une autre instance en cours d'exécution et de passer les paramètres de ligne de commande à cette instance? Je n'ai pas trouvé de moyen de le faire dans .NET jusqu'ici, alors j'ai pensé vérifier ici si quelqu'un avait déjà fait quelque chose comme ça auparavant.Est-ce que .NET peut vérifier d'autres paramètres de ligne de commande en cours d'exécution?

Répondre

4

Vous pouvez récupérer ces informations via WMI.

Voir la classe Win32_Process, en particulier sa propriété de ligne de commande. Ce Code Project article fournit des pointeurs sur la façon de le faire,

2

Généralement, ces variables sont stockées dans l'espace mémoire du programme, auquel vous ne devriez pas (en théorie) avoir accès.

Vous devrez découvrir comment lancer une communication interprocessus avec les autres instances et échanger des données. Les tubes nommés sont une bonne option, mais vous pourriez vouloir commencer une nouvelle question de stackoverflow pour obtenir de bonnes options à ce sujet.

-Adam

0

Pour référence future, voici un extrait de code de la façon dont je l'ai eu à travailler. C'était juste pour un test pour voir comment tout cela a fonctionné. Le code réel implémenté analyse les paramètres de ligne de commande pour ce dont nous avons besoin.

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) 
     {} 
    } 
} 
Questions connexes