Como você afirma:todas as instâncias instaladas podem ser encontradas em:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL
Usando os valores dessas instâncias, você pode acessar:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{INSTANCE DATA}\MSSQLServer\CurrentVersion
onde {INSTANCE DATA} são os dados das chaves nas primeiras configurações do registro.
Por exemplo:Eu tenho um computador contendo estas chaves:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL]
"MSSQLSERVER2008"="MSSQL10_50.MSSQLSERVER2008"
"SQLEXPRESS2008R2"="MSSQL10_50.SQLEXPRESS2008R2"
=> significando que existem 2 instâncias:A versão pode ser encontrada aqui:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER2008\MSSQLServer\CurrentVersion]
"CurrentVersion"="10.50.4000.0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQLServer\CurrentVersion]
"CurrentVersion"="10.50.4000.0"