我看了一下SQL2008 R2功能包和我的Windows注册表(本机上安装了SQL2008 R2 Dev)中的SharedManagementObjects.msi,我相信这些是应该用来检测SMO的注册表项HKLM):
SOFTWARE \ Microsoft \ Microsoft SQL Server \ SharedManagementObjects \ CurrentVersion - 这显然是主键,表示安装了某个版本的SMO。
SOFTWARE \ Microsoft \ Microsoft SQL Server 2008 Redist \ SharedManagementObjects \ 1033 \ CurrentVersion - 这可能意味着安装了2008英语。可能只是检查是否存在SOFTWARE \ Microsoft \ Microsoft SQL Server 2008 Redist \ SharedManagementObjects就足够了。
同样适用于SQL2012: HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ Microsoft SQL Server的2012的Redist \ SharedManagementObjects \ 1033 \ CURRENTVERSION
但不SQL2005!即使我在这台机器上也安装了2005版本。
还有一件事,因为SMO依赖于它们,所以通常还需要Microsoft SQL Server系统CLR类型。 的SQLSysClrTypes.msi只有一个注册表项: SOFTWARE \微软\ Microsoft SQL Server的\引用次数\ SQLSysClrTypes
一个相关的问题:你是否面临过与2005年和2008年相同的代码工作的问题。如果是的话,你是如何解决它的? – Mostlyharmless 2008-11-13 19:37:16