检查是否安装了 SQL Server C#
本文关键字:Server SQL 是否 安装 检查 | 更新日期: 2023-09-27 18:34:22
我正在用C#完成一个包含SQL Server数据库的应用程序。
如何检查用户是否安装了 SQL Server 2012 Express Local DB?
是否可以在x86,x64上通过注册表进行检查?
基本上这个想法是,如果用户没有安装SQL Server,应用程序建议安装它。
作为安装程序,我正在为安装程序工作,没有SQL Server 2012 Express Local DB的依赖项。
谢谢。
您必须循环浏览卸载 GUID 并找到以关键字"Microsoft SQL Server 2012"开头的 GUID。 您可以通过转到控制面板>程序和功能>并查看"显示名称"列来找到它。
//HKEY_LOCAL_MACHINE''SOFTWARE''Wow6432Node''Microsoft''Windows''CurrentVersion''Uninstall{guidVariable}''DisplayName
.. 应匹配"Microsoft SQL Server 2012*"通配符。
我没有确切的代码,但这应该可以让您入门。 只需遍历"卸载"键的所有子项,然后通过获取值找到"显示名称"键。 下面的"GUID"变量应该是您的迭代器,因为您不知道该值。 我相信您可以获得作为"卸载"键子键的所有 GUID 值的列表。
string UninstallRegKeyPath = @"SOFTWARE'Microsoft'Windows'CurrentVersion'Uninstall";
Guid UninstallGuid = new Guid(GUID);
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(UninstallRegKeyPath, true))
{
if (key == null)
{
return;
}
try
{
string guidText = UninstallGuid.ToString("B");
RegistryKey child = key.OpenSubKey(guidText);
if (child != null)
{
string displayName = child.GetValue("DisplayName").ToString();
if (displayName.Contains("Microsoft SQL Server 2012"))
{
// implement logic when MSSQL 2012 is found
}
child.Close();
}
}
}
只是要小心。 有 32 位安装和 64 位安装。 Wow6432Node包含我相信的32位程序,因此默认情况下安装在C:'Program Files (x86)'
中的所有内容(但可能在任何地方(。 还有另一个位置,我会让你找到,用于所有 64 位程序,默认情况下安装在 C:'Program Files'
中(再次可以安装在任何地方(。
编辑:
试试这个。 您可能还希望将"LocalMachine"替换为"CurrentUser",因为许多安装程序允许您为用户或所有用户配置它们。
using (RegistryKey root = Registry.LocalMachine.OpenSubKey(@"SOFTWARE'Microsoft'Windows'CurrentVersion'Uninstall"))
{
string searchKey = @"Microsoft SQL Server 2012";
string subKeyName = "DisplayName";
foreach (string keyname in root.GetSubKeyNames())
{
//Console.WriteLine(keyname);
using (RegistryKey key = root.OpenSubKey(keyname))
{
try // in case "DisplayName doesn't exist
{
string displayName = key.GetValue(subKeyName).ToString();
if (displayName.StartsWith(searchKey))
Console.WriteLine("GUID: " + keyname + Environment.NewLine + displayName + Environment.NewLine);
}
catch
{
}
}
}
}
Console.ReadLine();