2009-07-22 3 views
4

어떻게 SQL Server의 지정된 인스턴스 (기본 이름 인스턴스)C# 프로그래밍 방식으로 SQL Server 설치 경로를 얻는 방법?

+0

이걸로 무엇을하고 싶니? 원하는 경로에 따라 설치 경로가 충분하지 않을 수 있습니다. –

+0

사실 exe에 대한 전체 경로가 필요합니다. –

+0

어떤 EXE? 여러 가지가 있으며 무엇을 필요로합니까? 다시 한 번, 이유에 따라 더 나은 방법이있을 수 있습니다. –

답변

4
using(RegistryKey sqlServerKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server")) 
{ 
    foreach (string subKeyName in sqlServerKey.GetSubKeyNames()) 
    { 
     if(subKeyName.StartsWith("MSSQL.")) 
     { 
      using(RegistryKey instanceKey = sqlServerKey.OpenSubKey(subKeyName)) 
      { 
       string instanceName = instanceKey.GetValue("").ToString(); 

       if (instanceName == "MSSQLSERVER")//say 
       { 
        string path = instanceKey.OpenSubKey(@"Setup").GetValue("SQLBinRoot").ToString(); 
        path = Path.Combine(path, "sqlserver.exe"); 
        return path; 
       } 
      } 
     } 
    } 
} 
+0

물론 이것은 SQL Server가 선택한 방식 레지스트리 키를 사용하고 변경하는 즉시 중단됩니다. Microsoft가 자신의 레지스트리 키를 변경할 권리가 있음을 인정합니다. 그래서 내가 너에게 무엇을 성취하려고하는지 물었다. 릴리스간에 끊어지지 않는 방법이있을 수 있습니다. –

+1

64 비트 OS에서 32 비트 인스턴스를 찾는 경우 (매우 이상하지만 가능한 경우) 다음을 살펴야합니다. HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Microsoft SQL Server –

관련 문제