2008-11-19 61 views
0

試圖查找產品是否安裝在遠程pC中,是否需要很長時間才能執行,有沒有什麼方法可以實現這一點。查找遠程系統中是否存在特定產品

// usage: // uninstall4(「hostname」,「productname」,「{AC9C1263-2BA8-4863-BE18-CE42}」,「10.0.0.69」);

public void uninstall4(string targetServer, string product,string guid , string version) 
    { 
     //Connect to Server 
     System.Management.ConnectionOptions connoptions = new System.Management.ConnectionOptions(); 
     connoptions.Impersonation = System.Management.ImpersonationLevel.Impersonate; 
     connoptions.Timeout = new TimeSpan(0, 0, 10); // 10 seconds 
     System.Management.ManagementScope scope = new System.Management.ManagementScope(@"\\" + targetServer + @"\root\cimv2", connoptions); 
     scope.Connect(); 

     string q = "select * from Win32_Product where name = '" + product + "' and IdentifyingNumber='"+guid+"' and version = '"+version+"'"; 

     System.Management.SelectQuery query = new System.Management.SelectQuery(q); 

     System.Management.EnumerationOptions options = new System.Management.EnumerationOptions(); 
     options.EnumerateDeep = false; 
     options.ReturnImmediately = false; 
     options.DirectRead = true; 

     using (System.Management.ManagementObjectSearcher searcher 
      = new System.Management.ManagementObjectSearcher(scope, query, options)) 
     { 
      using (System.Management.ManagementObjectCollection moc = searcher.Get()) 
      { 
       if(moc == null || moc.Count == 0) 
       { 
        throw new Exception("product Not Found"); 
       } 

      } 
     } 

    } 

回答

2

沒有。當你查詢它時,Win32_Product類的提供者必須動態地構建信息,並且總是很慢。