I looked at SharedManagementObjects.msi from the SQL2008 R2 feature package, and my Windows registry (SQL2008 R2 Dev is installed on this computer), and I believe that these are the registry keys that should be used to detect SMO (all under HKLM):
\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion - , -, , , SMO.
\Microsoft\Microsoft SQL Server 2008 Redist\SharedManagementObjects\1033\CurrentVersion - , , 2008 . , SOFTWARE\Microsoft\Microsoft SQL Server 2008 Redist\SharedManagementObjects.
SQL2012:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 2012 Redist\SharedManagementObjects\1033\CurrentVersion
SQL2005! , 2005 .
: CLR Microsoft SQL Server System, SMO .
SQLSysClrTypes.msi :
\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes