Проверьте, установлен ли поставщик Microsoft OLE DB для сервера индексирования (он же поставщик =MSIDXS)?

Я использую Windows Server 2008 R2 и ASP.NET 4.6.1.

Как проверить, есть ли поставщик OLE DB для сервера индексирования (поставщик =MSIDXS) установлено?

Может быть, получить список поставщиков OLEDB, доступных в системе.

1 ответ

Решение

Я пытаюсь этот код.

Я не знаю сейчас, распространяется ли это на всех 32-битных и 64-битных провайдеров.

Руководство для CLSID OLEDB есть C8B522D0-5CF3-11ce-ADE5-00AA0044773D

internal static Guid IID_IUnknown = new Guid("00000000-0000-0000-c000-000000000046");
internal static Guid CLSID_DataLinks = new Guid("2206CDB2-19C1-11d1-89E0-00C04FD7A829");
internal static Guid CLSID_OLEDB_ENUMERATOR = new Guid("C8B522D0-5CF3-11ce-ADE5-00AA0044773D");
internal static Guid CLSID_MSDASQL_ENUMERATOR = new Guid("C8B522CD-5CF3-11ce-ADE5-00AA0044773D");


private string GetOLEDBProvidersRegistered()
{
    var res = "";
    try
    {
        Guid guidOleDbEnum = new Guid("{C8B522D0-5CF3-11ce-ADE5-00AA0044773D}");

        Type type = Type.GetTypeFromCLSID(guidOleDbEnum);

        using (OleDbDataReader rdr = OleDbEnumerator.GetEnumerator(type))
        {
            while (rdr.Read())
                //Console.WriteLine("{0} - {1}", rdr["SOURCES_NAME"], rdr["SOURCES_DESCRIPTION"]);
                res += string.Format("{0} - {1}\r\n", rdr["SOURCES_NAME"], rdr["SOURCES_DESCRIPTION"]);

        }
    }
    catch (Exception ex)
    {
        res = ex.Message;
    }
    return res;
}
Другие вопросы по тегам