0

我正在尝试借助以下代码在本地计算机上安装所有 SQL 实例:

RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
string[] instances = (string[])rk.GetValue("InstalledInstances");

if (instances.Length > 0)    //Error
{
    foreach (string instance in instances)
    {
        MessageBox.Show(instance);
    }
}

它给出了以下例外:

你调用的对象是空的。

我已经手动检查了“注册表编辑器”并且存在指定的键,我的系统上也有两个 SQL 实例。

现在请告诉我为什么它没有访问所需的键值?

4

2 回答 2

0

我在我的 64 位机器上运行了你的代码。它工作得很好。确保您的平台设置为 AnyCPU 或 x64 但不是 x86

在此处输入图像描述

于 2012-07-06T04:09:39.907 回答
0

这一行可能是问题 string[] instances = (string[])rk.GetValue("InstalledInstances");

因为 RegistryKey.GetValue Method (String) 返回一个对象,而您将其转换为 string[]

在将其转换为 string[] 之前,您应该检查返回的值是否不为空

于 2012-07-06T00:24:12.090 回答