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

Posted

技术标签:

【中文标题】如何以编程方式检查系统上是不是安装了 SQL Server Management Studio?【英文标题】:How to check if SQL Server Management Studio is installed on a system programmatically?如何以编程方式检查系统上是否安装了 SQL Server Management Studio? 【发布时间】:2016-01-16 05:57:18 【问题描述】:

我需要查看系统上是否安装了 SQL Server Management Studio。当通过安装 Visual Studio 在系统上安装 SQL Server Express 实例但系统上未安装 Management Studio 时,我特别需要此功能。

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

【问题讨论】:

必须以编程方式进行吗?如果是,请说明原因。 是的,它必须是务实的,因为我想在我的用户机器上的应用程序设置开始时理解这一点 查看此链接。 ***.com/questions/908850/… thanx ,但是注册表中 SSMS 的名称是什么? SQL 2005 SSMS 将其设置存储在HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\90\Tools\Shell SQL 2008 SSMS 将其设置存储在HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell 【参考方案1】:

你可以检查它的注册表项,看看它是否返回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\90\Tools\ClientSetup

编辑

根据this documents,在使用地址SOFTWARE\Microsoft\Microsoft SQL Server\90\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

【讨论】:

我的机器上安装了SQL server management studio,我检查了90,它返回了null,但是我检查了100,它返回的值不是null,可以吗?我的意思是我必须检查每台机器的 90 和 100 吗? @Shima.Y 先试试另外两个注册地址,看看能不能像其他文档里提到的比较多 我在您的回答中检查了上面的 3 个地址,但它们都返回 null ,但 100 返回的不是 null 值 @Shima.Y 你的机器上安装了SQL Server 2008吗?【参考方案2】:

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

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mo in mos.Get())

       if(mo["Name"].ToString().Equals("Application Name")) //
       
         return true;
       

【讨论】:

thanx 但我不知道应该写什么来代替 SSMS 的“应用程序名称”,你能帮我吗? 到 chk name start sql server 然后在 goto 其进程后打开任务管理器然后你可以看到它的名字 SSMS 是正确的 由于某种原因,在调试器遇到 foreach 循环后,我卡住了,什么也没有发生,事实证明这有很大的性能问题,至少对我来说是在大型机器上进行操作(良好的 CPU 和吨ram),虽然也许我做错了什么......

以上是关于如何以编程方式检查系统上是不是安装了 SQL Server Management Studio?的主要内容,如果未能解决你的问题,请参考以下文章

检查 Stackable 文件系统是不是以编程方式安装

如何以编程方式检查 Android 中是不是安装了应用程序?

如何以编程方式检查 CPU 上是不是启用了 fused mul add (FMA) 指令?

如何以编程方式检查 Photoshop 画笔是不是存在

如何以编程方式检查 Windows 是不是是最新的?

如何通过使用 C、C++ 在 Linux 上指定其名称以编程方式检查特定守护程序是不是正在运行?