/// <summary>
/// Получение названия группы команд для AecUtilites
/// </summary>
/// <example>
/// Например, для Civil 3D 2016. Раздел реестра:
/// HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R20.1\ACAD-F000:419
/// \AEC\7.8\General\Tools\{E04B3676-CBB7-454c-9CDB-A55ACA81C41F}
/// Название параметра: AppName
/// Значение параметра: AecUtilities70
/// Метод вернёт строку: "AecUtilities70"
/// </example>
/// <returns></returns>
static string GetCmdGroupName()
{
// Открываем раздел
// HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-XXXX:419\AEC
Win32.RegistryKey aecRoot = Win32.Registry.CurrentUser.OpenSubKey
(Path.Combine(HostApplicationServices.Current.MachineRegistryProductRootKey, "AEC"));
if (aecRoot != null)
{
// В этом разделе внутри разделы с названиями в виде номера версии,
// в одном из них есть вложенный раздел General. Ищем его.
string[] aecSubKeyNames = aecRoot.GetSubKeyNames();
foreach (string aecSubKeyName in aecSubKeyNames)
{
Win32.RegistryKey aecSubKey = aecRoot.OpenSubKey(aecSubKeyName);
// Если нашли
if (aecSubKey.GetSubKeyNames().Contains("General"))
{
// Получаем раздел
// HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\
// RXX.X\ACAD-XXXX:419\AEC\X.X\General\Tools
Win32.RegistryKey tools
= aecSubKey.OpenSubKey(Path.Combine("General", "Tools"));
// В нём - только один раздел с названием в виде GUID.
// Получаем его
string guidKeyName = tools.GetSubKeyNames()[0];
Win32.RegistryKey guidKey = tools.OpenSubKey(guidKeyName);
// Читаем значение AppName
return guidKey.GetValue("AppName").ToString();
}
}
}
return null;
}