如何使用C ++获取SQL SERVER安装路径?

时间:2009-07-30 07:10:52

标签: c++ visual-c++

如何以编程方式获取Sqlserver安装路径。

如果我们选择注册表,那么注册表配置单元可能会从一个操作系统到另一个操作系统不同

像w2k3到w3k8和VISTA和W2k8 R2一样..

但是我按照以下方式使用了注册表但是我给了一些硬代码密钥vAlues如果Hives相同,那么如果不同的问题上升就没有问题....

    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 个答案:

答案 0 :(得分:1)

我认为实例独立设置(即不依赖于您运行的SQL Server实例数的共享工具)的hive应为HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsft \ Microsoft SQL Server(版本号) )。如果你不能找到HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ Microsoft SQL Server的\ 100版本(匹配的SQL Server 2008),也许你可以检查90版本(SQL 2005)HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ Microsoft SQL Server的\ 90工具?

你有没有看到在某些版本的Windows上,这个蜂巢是不同的?


这篇文章还介绍了如何获取支持Instance的注册表项 MSDN: File Locations for Default and Named Instances of SQL Server 在我们的安装脚本中,我们使用HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ 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上工作,但它适用于Win 2003 Srv 见sql-server-how-to-select-the-installation-path

所以你可能无法实现更复杂的逻辑 - 首先检查HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSSQLServer \ Setup(如果不存在),检查HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL.1 \ Setup ...但这是您需要的实例感知文件夹,如Binn,Data,Backup ......