C# 知道注册表项返回的实例是默认实例还是命名实例

C# 知道注册表项返回的实例是默认实例还是命名实例,c#,.net,sql-server,C#,.net,Sql Server,我有一段代码: List<SQLInstancia> list = new List<SQLInstancia>(); SQLInstancia instancia; int cont = 0; RegistryView registryView = Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Regi

我有一段代码:

        List<SQLInstancia> list = new List<SQLInstancia>();
        SQLInstancia instancia;
        int cont = 0;
        RegistryView registryView = Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32;
        using (RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, registryView))
        {
            //Instancias en 64bits
            RegistryKey instanceKey = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL", false);
            //instancias en 32bits
            RegistryKey instanceKey_ = hklm.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server", false);
            if (instanceKey != null)
            {

                foreach (var instanceName in instanceKey.GetValueNames())
                {
                    cont++;
                    instancia = new SQLInstancia();
                    instancia.Nombre = Environment.MachineName + "\\" + instanceName;
                    instancia.IdInstancia = cont;
                    list.Add(instancia);
                }
            }
        }
List List=新列表();
SQLInstancia instancia;
int cont=0;
RegistryView RegistryView=Environment.Is64BitOperatingSystem?RegistryView.Registry64:RegistryView.Registry32;
使用(RegistryKey hklm=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,registryView))
{
//Instancias en 64位
RegistryKey instanceKey=hklm.OpenSubKey(@“SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL”,false);
//instancias en 32位
RegistryKey instanceKey\=hklm.OpenSubKey(@“HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server”,false);
if(instanceKey!=null)
{
foreach(instanceKey.GetValueNames()中的var instanceName)
{
cont++;
instancia=新的SQLInstancia();
instancia.Nombre=Environment.MachineName+“\\”+instanceName;
instancia.IdInstancia=续;
列表。添加(实例);
}
}
}
通过这些代码,我可以在本地计算机上运行所有SQL Server实例,但问题是我不知道它是默认实例还是命名实例

我已经用SMO和SqlDataSourceEnumerator.GetDataSources()尝试过了,第二个有效,但它检索网络上的所有实例,我不需要它们,我只需要本地计算机上的实例。使用SMO,它显示我的命名实例,但不显示默认实例