C# 如何确定是否安装/注册了VFPOLEDB提供程序?

C# 如何确定是否安装/注册了VFPOLEDB提供程序?,c#,oledb,provider,C#,Oledb,Provider,我需要检查我的程序是否安装/注册了VFPOLEDB提供程序?我想显示一条消息,告诉用户下载并安装提供商。如何在C#中签入 正如这里所建议的:您可以在注册表中查找VFPOLEDB的键。打开regedit并搜索VFPOLEDB,您将在多个地方找到它;你对这里的那个感兴趣: HKEY_CLASSES_ROOT\TypeLib\{50BAEECA-ED25-11D2-B97B-000000000000}\1.0\0\win32 HKEY_CLASSES_ROOT\TypeLib\{50BAEECA-E

我需要检查我的程序是否安装/注册了VFPOLEDB提供程序?我想显示一条消息,告诉用户下载并安装提供商。如何在C#中签入

正如这里所建议的:您可以在注册表中查找VFPOLEDB的键。打开
regedit
并搜索VFPOLEDB,您将在多个地方找到它;你对这里的那个感兴趣:

HKEY_CLASSES_ROOT\TypeLib\{50BAEECA-ED25-11D2-B97B-000000000000}\1.0\0\win32
HKEY_CLASSES_ROOT\TypeLib\{50BAEECA-ED25-11D2-B97B-000000000000}
所以我们知道VFPOLEDB应该在这里注册:

HKEY_CLASSES_ROOT\TypeLib\{50BAEECA-ED25-11D2-B97B-000000000000}\1.0\0\win32
HKEY_CLASSES_ROOT\TypeLib\{50BAEECA-ED25-11D2-B97B-000000000000}
我们可以使用以下C#表达式测试它是否存在:

(Registry.ClassesRoot.OpenSubKey("TypeLib\\{50BAEECA-ED25-11D2-B97B-000000000000}") != null)
或者我们可以将其封装在一个漂亮的静态类中,以便于重用:

public static class CheckVfpOleDb
{
    public static bool IsInstalled()
    {
        return Registry.ClassesRoot.OpenSubKey("TypeLib\\{50BAEECA-ED25-11D2-B97B-000000000000}") != null;
    }
}

很好的解决方案,但别忘了关闭子键,以防出现异常。