2012-12-18 17 views
8

Şimdiye kadar bunu başarmanın iki yolunu denedim.Uzak bir makinede çalışan işlemin açıklaması nasıl alınır?

İlk olarak, System.Diagnostics kullandım, ancak MainModule'daki "Uzak makineler için özellik desteklenmiyor" öğesinin bir NotSupportedException olsun.

foreach (Process runningProcess in Process.GetProcesses(server.Name)) 
{ 
    Console.WriteLine(runningProcess.MainModule.FileVersionInfo.FileDescription); 
} 

ikinci yolu

, ben System.Management kullanarak denedi ama ManagementObject ait Description Name aynı o gibi görünüyor.

Uzaktaki bir makinede çalışan bir işlemin açıklamalarını almak için daha iyi bir yolu bilmek isteyen var mı?

+0

Rob van der Woude's wmigen'i kullanmayı denediniz mi? Mevcut olanı göstermeye yardımcı olabilir. http://www.robvanderwoude.com/wmigen.php – Lizz

+0

@Lizz Well zaten objenin özellikleri arasında döngü yapmayı denedim ve Property.ToString() öğesinin açıklamasında bulunması gereken bir anahtar kelime içerip içermediğini kontrol ettim. aradığım süreçlerden biri ... – athom

+0

Yikes. Üzgünüm, başka bir şey düşünemiyorum. :(Bu ilginç ve garip. İyi kod ve sorun giderme için +1! :) – Lizz

cevap

4

Sanırım amacım için yeterince iyi çalışacak bir yöntemim var. Temel olarak dosya yolunu ManagementObject'dan alıyorum ve açıklamayı gerçek dosyadan alıyorum.

ConnectionOptions connection = new ConnectionOptions(); 
connection.Username = "username"; 
connection.Password = "password"; 
connection.Authority = "ntlmdomain:DOMAIN"; 

ManagementScope scope = new ManagementScope(@"\\" + serverName + @"\root\cimv2", connection); 
scope.Connect(); 

ObjectQuery query = new ObjectQuery("select * from Win32_Process"); 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); 
ManagementObjectCollection collection = searcher.Get(); 

foreach (ManagementObject obj in collection) 
{ 
    if (obj["ExecutablePath"] != null) 
    { 
     string processPath = obj["ExecutablePath"].ToString().Replace(":", "$"); 
     processPath = @"\\" + serverName + @"\" + processPath; 

     FileVersionInfo info = FileVersionInfo.GetVersionInfo(processPath); 
     string processDesc = info.FileDescription; 
    } 
} 
İlgili konular