Сопоставить имя поставщика строки подключения к базе данных в dll - PullRequest
0 голосов
/ 07 января 2020

Я смотрю на SQL Строка подключения к серверу. Это выглядит так:

Источник данных = xxxxxxxx; Начальный каталог = xxxxxxxx; Поставщик = SQLNCLI11.1; Интегрированная безопасность = SSPI

Мой вопрос: как это имя провайдера (в общем случае), сопоставленное с указанной c DLL или библиотекой?

Вот второй пример (для Oracle):

Источник данных = xxxxxxxx; ID пользователя = xxxxxxxx; Поставщик = OraOLEDB. Oracle .1; Постоянная информация о безопасности = True;

Тот же вопрос. Как мне добраться от имени провайдера до библиотеки или библиотеки, где находится код?

1 Ответ

1 голос
/ 07 января 2020

путь к dll хранится в inprocserver32 провайдера (GUID) в реестре (HKEY_CLASSES \ CLSID)

foreach ($provider in [System.Data.OleDb.OleDbEnumerator]::GetRootEnumerator())
{
    $v = New-Object PSObject        
    for ($i = 0; $i -lt $provider.FieldCount; $i++) 
    {
        Add-Member -in $v NoteProperty $provider.GetName($i) $provider.GetValue($i)
    }
    $reg = Get-ItemProperty "Registry::HKEY_CLASSES_ROOT\CLSID\$($v.SOURCES_CLSID)\InprocServer32" -ErrorAction SilentlyContinue
    Add-Member -in $v "Dll path" $reg.'(default)'

    $v
}
...