如何以编程方式检查系统上是否安装了 SQL Server Management Studio?

How to check if SQL Server Management Studio is installed on a system programmatically?

我需要查明系统上是否安装了 SQL Server Management Studio。当通过安装 Visual Studio 在系统上安装 SQL Server Express 的实例但系统上没有安装 Management Studio 时,我特别需要这个。

有关详细信息,我可以找到系统上安装的 SQL 服务器的所有实例,但我需要了解系统上是否也安装了 Management Studio。

您可以像前面提到的那样使用 WMI:

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mo in mos.Get())
{
       if(mo["Name"].ToString().Equals("Application Name")) //
       {
         return true;
       }
}

您可以检查它的注册表项,看看它是否returns null:

private RegistryKey _regSql = Registry.LocalMachine.OpenSubKey
            (@"HKLM\Software\Classes\Applications\sqlwb.exe", false);

if (_regSql == null) //If it's null then  SQL Server management is not installed
{
   //Do something
}

您还可以检查另外两个注册表位置:

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SSMSEE
SOFTWARE\Microsoft\Microsoft SQL Server\Tools\ClientSetup

编辑

根据 this documents,在使用地址 SOFTWARE\Microsoft\Microsoft SQL Server\Tools\ClientSetup 时,根据您要检查的版本更改数字部分 (90)

90   | SQL Server 2008
100  | SQL Server 2008 R2
110  | SQL Server 2012
120  | SQL Server 2014 
130  | SQL Server 2016
140  | SQL Server 2017