2008-09-04 19 views
2

Uygulamamızın farklı örneklerinin nasıl başlatıldığını belirlemeye çalıştığımız ilginç bir durum var. .NET'in başka bir çalışan örneği sorgulayabilmesi ve komut satırı parametrelerini bu örneğe geçirebilmesinin bir yolu var mı? Şimdiye kadar .NET'de bunu yapmanın bir yolunu bulamadım, bu yüzden daha önce böyle bir şey yapıp yapmadıklarını kontrol etmek için buraya bakacağımı düşündüm..NET çalışan diğer programların komut satırı parametrelerini denetleyebilir mi?

cevap

4

Sen WMI aracılığıyla bu bilgileri alabilirsiniz.

Özellikle komut satırı özelliğinde Win32_Process sınıfına bakın. Bu Code Project article, bunun nasıl yapılacağı hakkında işaretçiler sağlar,

2

Genel olarak, bu değişkenler programın bellek alanında saklanır, ki bunları (teorik olarak) erişememesi gerekir.

Diğer örnekler ve ticari verilerle nasıl bir süreç içi iletişim başlatılacağını öğrenmeniz gerekir. Adlandırılmış borular iyi bir seçenek, ancak bu konuda iyi seçenekler almak için yeni bir stackoverflow sorusu başlatmak isteyebilirsiniz.

-Adam

0

Gelecekte başvurmak için, nasıl çalıştığını gösteren bir kod snippet'i burada verilmiştir. Bu sadece nasıl çalıştığını görmek için bir test oldu. Gerçek uygulanan kod, ihtiyacımız olan şey için komut satırı parametrelerini ayrıştırır.

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) 
     {} 
    } 
} 
İlgili konular