我正在查看SQL Server连接字符串。看起来像这样:
数据源= xxxxxxxx;初始目录= xxxxxxxx;提供程序= SQLNCLI11.1;集成安全性= SSPI
我的问题是:提供者名称(通常)如何映射到特定的DLL或库?
这是第二个示例(对于Oracle):
数据源= xxxxxxxx;用户ID = xxxxxxxx;提供程序= OraOLEDB.Oracle.1;持久安全信息=真实;
相同的问题。如何从提供程序名称获取代码所在的dll或库?
dll路径存储在注册表(HKEY_CLASSES \ CLSID)中的提供程序(GUID)的inprocserver32中
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
}