public static List<Guid> GetImplementedCategories(Guid clsid)
{
List<Guid> categories = new List<Guid>();
string categoriesKey = String.Format(@"CLSID\{{{0}}}\Implemented Categories", clsid);
RegistryKey key = Registry.ClassesRoot.OpenSubKey(categoriesKey);
if (key != null)
{
try
{
foreach (string catid in key.GetSubKeyNames())
{
try
{
Guid guid = new Guid(catid.Substring(1, catid.Length-2));
categories.Add(guid);
}
catch (Exception)
{
// ignore invalid keys.
}
}
}
finally
{
key.Close();
}
}
return categories;
}