2011-12-29 162 views
2

沒有註冊表的幫助,我怎麼知道MySQL是否安裝?我試圖通過C#在Windows機器上確定它。如何檢測MySQL是否安裝?

我發現,涉及查詢註冊表的解決方案,但我不想靠這個。 C#中是否有任何函數用於確定當前安裝的軟件?

+2

你想完成什麼? – Matten 2011-12-29 12:15:59

+0

@Matten:應該是更清楚現在... – 2011-12-29 12:16:55

+0

功能在C#中確定當前已安裝的軟件......如果這一功能將檢索信息...登記 – 2011-12-29 12:22:32

回答

0

假設你還需要訪問MySQL(AOT只知道有關它的存在),你可以

  • 的MySQL連接器通過在try-catch塊反射(可選)負載GAC副本,如果失敗
  • 加載MySQL連接器的本地副本
  • 嘗試使用錯誤的用戶名/密碼連接到本地主機
  • 檢查錯誤代碼。如果這是「拒絕訪問」,那麼您有MySQL
2

您可以通過WMI執行此操作:您需要的類是Win32_Product

真的容易在PowerShell中:

Get-WmiObject -Class Win32_Product 

會得到安裝的產品,然後您可以過濾列表。

在C#中,嘗試System.Management命名空間:

public bool CheckForMySQLServer() 
    { 
     string query = "SELECT Name FROM Win32_Product WHERE Name LIKE '%MySQL Server%'"; 

     var searcher = new ManagementObjectSearcher(query); 
     var collection = searcher.Get(); 

     return collection.Count > 0; 
    } 

注意,這是令人髮指的慢 - 接管我的電腦上一分鐘 - 但如果你需要,你可以得到的版本號字符串的保持(見收集項目上的GetText()方法)。