如何检测MySQL是否已安装?

3

没有注册表的帮助,我如何知道MySQL是否已安装?我正在尝试通过C#在Windows机器上确定这一点。

我已经找到了一个涉及查询注册表的解决方案,但我不想依赖它。是否有任何C#函数可用于确定当前安装的软件?


2
你想要实现什么目标? - Matten
@Matten:现在应该更清楚了... - Cody Gray
用于确定当前安装软件的C#函数...该函数将从哪里检索信息?...注册表 - Haris Hasan
1
你为什么不跟进你的问题或接受答案,Sreeee? - Maarten Bodewes
3个回答

3
你可以通过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()方法)。

0
假设您在编程中需要访问MySQL(而不仅仅知道它的存在),您可以:
  • (可选)通过反射在try-catch块中加载GAC副本的MySQL连接器,如果失败
  • 加载本地副本的MySQL连接器
  • 尝试使用错误的用户名/密码连接到localhost
  • 检查错误代码。如果是"access denied",则表示您拥有MySQL

0

检查MySQL安装的注册表键:

bool IsMySqlInstalled()
{
   return Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MySQL AB") != null;
}

关于创建的键是什么,可以在这里找到MySQL的详细信息,在“注册表更改”部分下:

在典型的安装情况下,MySQL安装向导会创建一个Windows注册表键,位于HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接