如何以编程方式获取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;
}
}
答案 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 ......