2009-07-30 75 views
0

如何以編程方式獲取Sqlserver安裝路徑。如何使用C++獲取SQLSERVER安裝路徑?

如果我們去註冊表然後註冊表配置單元可能是不同的,從一個操作系統到其他操作系統

像W2K3到w3k8和VISTA和W2K8 R2這樣的..

,但我沒有使用註冊表如下但我給了一些硬編碼的鍵值如果蕁麻疹是相同的,然後如果不同的問題上升沒有問題....

CRegKey cregkey; 
DWORD result; 
const char subkey[]="SOFTWARE\\Microsoft\\Microsoft SQL Server\\100"; 
const char keyval[] = "VerSpecificRootDir"; 
char path[ 2048 ]; 
result = cregkey.Open(HKEY_LOCAL_MACHINE,subkey); 
    if (ERROR_SUCCESS == result) 
    { 
     DWORD dwCount = sizeof(path); 
     result = cregkey.QueryStringValue(keyval, path, &dwCount); 
      if (ERROR_SUCCESS == result) 
      {    
       cout<<" The SQLSERVER Pathis "<<path<<endl; 

      } 
    }     

回答

1

我想這對於蜂巢實例獨立設置(即共享的工具,沒有做t取決於您運行SQL Server的實例數)應該是HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsft \ Microsoft SQL Server(版本號)。如果您找不到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ 100版本(與SQL Server 2008匹配)的工具,那麼您可以檢查90版本(SQL 2005)HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ 90?

你有沒有看過在某些版本的Windows上這個配置單元是不同的?


這裏還介紹瞭如何獲得實例感知註冊表項 MSDN: File Locations for Default and Named Instances of SQL Server 在我們的安裝腳本,我們使用值從HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ Microsoft SQL Server的\ MSSQL.1 \ SETUP,一篇文章例。其中MSSQL.1是一個實例名稱,實例名稱可以在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ Instance Names中找到

此外,我看到了幾篇文章,建議從HKEY_LOCAL_MACHINE \ Software \ Microsoft \ MSSQLServer \ Setup 我不會在Windows XP上運行,但它的作品在2003年贏SRV 見sql-server-how-to-select-the-installation-path

所以你沒有辦法可能,但實現起來比較複雜的邏輯 - 如果不存在,首先檢查HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的MSSQLServer \ SETUP ,請檢查HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL.1 \ Setup ...但這是您需要實例感知的文件夾,如Binn,Data,Backup ...