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);
    }
}

次の例外が発生します。

オブジェクト参照がオブジェクト インスタンスに設定されていません。

'Registry-Editor'を手動で確認しましたが、指定されたキーが存在します。また、システムに2つのSQLインスタンスがあります。

では、なぜ必要なキー値にアクセスしていないのか教えてください。

4

2 に答える 2

0

この行は、問題string [] instance =(string [])rk.GetValue( "InstalledInstances");である可能性があります。

RegistryKey.GetValueメソッド(String)がオブジェクトを返し、それをstring[]にキャストしているためです。

string []にキャストする前に、戻り値がnullでないかどうかを確認する必要があります

于 2012-07-06T00:24:12.090 に答える
0

私は64ビットマシンであなたのコードを実行しました。それはうまくいきました。プラットフォームがAnyCPUまたはx64に設定されているが、x86には設定されていないことを確認してください

ここに画像の説明を入力してください

于 2012-07-06T04:09:39.907 に答える