如何以编程方式检查系统上是不是安装了 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式检查 Android 中是不是安装了应用程序?