3

我正在使用以下代码来获取已安装的服务器实例列表。

Dim sqldatasourceenumerator1 As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
    datatable1 = sqldatasourceenumerator1.GetDataSources()

有时此代码运行良好,但大多数时候它会丢失并且系统变得无响应。

谁能告诉我一些在所有条件下都可靠的替代代码?谢谢

4

1 回答 1

1

您可以检查注册表,例如您可以尝试读取此注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL

64 位操作系统上的 32 位实例应列在:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names\SQL

这是 ac# 代码片段,用于在 64 位 Windows 上获取 64 位实例的此信息:

RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey key = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");

foreach (string s in key.GetValueNames())
{
   ...
}

key.Close();
baseKey.Close(); 
于 2013-06-29T13:47:55.367 回答