|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Коллекция ключей AutoCAD в реестре
Thượng Tá Quân Đội Nhân Dân Việt Nam
44d32'44"С, 33d26'51"В
Регистрация: 14.03.2005
Сообщений: 13,372
|
||
Просмотров: 125694
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
AutoCAD 2008 Architecture Eng + SP1:
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Autodesk Architectural Desktop 2005 Eng:
Код:
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 13.08.2008 в 23:07. Причина: Ошибка в имени ключа для AutoCAD 2006 Eng |
|||
![]() |
|
||||
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842
|
Для AutoCAD MEP 2009 Rus
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.2\ACAD-7006:419 ProductName=AutoCAD MEP 2009 ProductNameShort=ACD-MEP 2009 Release=5.7.68.0 Для Autodesk Architectural Desktop 2007 Rus HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.0\ACAD-5004:419 ProductName=Autodesk Architectural Desktop 2007 ProductNameShort=ADT 2007 Release=5.0.318.0 |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Прошу поиграть с прилагаемой программой. Она выводит список программ, которые можно отнести к Автокадам. При выделении в списке показывает его основные параметры.
Особо интересует самый нижний (красный цвет). По идее там для каждого Автокада должна появляться строчка наподобие AutoCAD.Application.17.2. Однако, если установлено две версии с одинаковым номером, но с разными EXE (русский и английский, например), то у одного из них Application вообще пустая. Это жульничество Autodesk, "я так думаю" (С) А что будет, если еще и "десктопы" той же версии стоят? Эти опыты нужны, чтобы по полному имени acad.exe получить однозначную строку Application. Необходимо, чтобы совершенно уверенно обращатьсяся к конкретному COM-серверу и при этом чтобы не вмешивался его родной братец. Программа ничего никуда не пишет и ничего не изменяет. Только читает реестр. |
|||
![]() |
|
||||
У меня 2009й рус.
В изловленных автокадах у меня AutoCAD 2009 Русский, R17.2 и AutoCAD 2006 Русский, R16.2 А строчка внизу AutoCAD.Application.17.1 и AutoCAD.Application.16.2
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Для ADT2005 и AutoCAD 2006 строка AutoCAD.Application не показывается. Для ADT2006, ADT2008, ADT2009 - все корректно. С причинами не разбирался (кода все равно не видно
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Да причина-то в реестре. В HKLM прописаны все Автокады. Взяв их коды типа R17.1 и местоположение acad.exe программа просматривает уже HKCR, например
HKEY_CLASSES_ROOT\AutoCAD.Application.17.1\CLSID Ему соответствует код наподобие {6AB55F46-2523-4701-A912-B226F46252BA} Теперь, найдя HKEY_CLASSES_ROOT\CLSID\{6AB55F46-2523-4701-A912-B226F46252BA}\LocalServer32 мы должны увидеть наподобие C:\Acad\AutoCAD 2008\acad.exe /Automation Если все так, то C:\Acad\AutoCAD 2008\acad.exe и есть AutoCAD.Application.17.1 Но фокусы Autodesk (начавшиеся в 2004) заключаются в том, что {6AB55F46-2523-4701-A912-B226F46252BA} может указать совсем на другой exe. Да еще изменения динамически делаются по мере запуска того или иного Автокада. Чего никак в приличных домах быть не должно. Может и как в #13 оказаться. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
ShaggyDoc, если честно, то я не очень понимаю. Надо получить путь к acad.exe? Или что-то еще требуется?
P.S. Если надо, могу выслать на почту экспорт куска реестра (своего, естественно) HKCR\AutoCAD*.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Ничего не надо высылать. Путь к acad.exe находится мгновенно. Просто собираю коллекцию ключей и выявляю закономерности в формировании Application.
Разумеется, если установлен единственный CAD - будет AutoCAD.Application. Как в #16. А нужно это затем, чтобы из сторонних программ через COM обращаться не к первому попавшемуся, и не к последнему запускавшемуся Автокаду, а к тому, какой нужен. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Намек понял, молчу
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842
|
Я вот что заметил, может пригодиться.
У меня установлены русские Autodesk Architectural Desktop 2007: HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.0 AutoCAD MEP 2009: HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.2 В HKCR имеется три записи HKEY_CLASSES_ROOT\AutoCAD.Application.17 HKEY_CLASSES_ROOT\AutoCAD.Application.17.1 HKEY_CLASSES_ROOT\AutoCAD.Application.17.2 В Application.17 ссылка на CLSID, в котором прописан последняя запущенная программа, либо ADT 2007, либо MEP 2009. В Application.17.1 и Application.17.2 ссылка на CLSID, в котором прописан путь к AutoCAD MEP 2009. И результат запущенной программы acadsList.exe: Autodesk Architectural Desktop 2007 Русский, R17.0 Application - пусто Application: AutoCAD.Application (если последним запускался 2007) AutoCAD MEP 2009 Русский, R17.2 Application: AutoCAD.Application.17.1 |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Объясните, пожалуйста, мне, неразумному, зачем все это нужно!
В идеале, на одном рабочем месте должен стоять один САПР (дорого ведь!) на который навешиваются узкоспециализированые приложения, например, СПДС (который, кстати, устанавливается в отдельную директорию). ps Был момент времени, когда я установил себе все начиная с 14 версии, но потом все удалил: и и на душе спокойней, и места побольше на диске стало, и проблема открытия чертежей в разных версиях отпала. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
gomer , значит тебе это просто не нужно.
Эта информация для разработчиков серьезных приложений для AutoCAD. А серьезные приложения должны работать с разными версиями AutoCAD (а с какими-то не должны). У каждой версии есть свои глюки, фичи и особенности. Их надо выявлять, с ними надо бороться. Поэтому разработчик обязан знать, как ведут себя AutoCAD's разных версий, локализаций, да еще по разными OS. Неизвестно ведь с чем придется работать приложению, например, на твоем рабочем месте. А кроме "голых" Автокадов еще существуют вертикальные решения. Их особенности тоже надо учитывать. "Домашнему мастеру" достаточно иметь ответку, молоток да плоскогубцы. А профессионалы возят с собой кучу чемоданов с разными инструментами. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
ShaggyDoc, Если еще актуально, то вот еще один довесочек
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Какой такой ключ? Рита, ты правила форума читала?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
1. AutoCAD 2009 Enu x86. Windows XP SP3 Rus x86.
2. AutoCAD 2011 Enu x86. Windows XP Rus x86. 3. AutoCAD 2011 Enu x64. Windows 7 Rus x64. Ваша программа ничего не находит для всех трёх выше указанных вариантов (во всяком случае у меня). Дополнительно: Возможно вам будет интересна следующая информация (на тот случай, если приложения x86 будут установлены на оси x64): Цитата:
Применительно к цитате - если в операционной системе x64 установить приложение x86 (во всяком случае AutoCAD 2009), то на самом деле информация будет храниться именно в выше указанной ветви ("Wow6432Node"), так что сие следует так же учитывать. По факту это приводит к следующему: в Gegedit вы, как обычно, лезете в привычную ветку реестра и видите интересующую вас инфу, после чего со спокойной душой пишете код, выполняющий это же действие программно - однако ваша программа покажет, что этой инфы в той ветке на самом деле нет! Вы будете недоумевать, мол как это нет, когда Regedit показывает, что есть... (я так когда-то сам сидел над этим...). Однако в Regedit можно полезть в "HKEY_LOCAL_MACHINE\Software\Wow6432Node" и найти там то же самое, что вы искали в привычной для x86 ветке. В "Wow6432Node" нужные данные удастся обнаружить и путём "программного" чтения. Т.е. выходит, что не всё то, что показывает нам Regedit в оси x64, является таким на самом деле (применительно к x86 приложениям). Применительно к вашей тестовой программке: Почему ваша программка не отображает мой AutoCAD - х.з. это нужно ваш код смотреть. Я писал ранее нечно подобное (регистрация плагинов для их автоматической загрузки при запуске указанной пользователем версии автокада) - всё работало без проблем везде где ставил (все версии установленных автокадов отображались), правда я пишу не на делфи, а на .нет, но это не важно - алгоритм-то один и тот же... На вскидку код примерно такой (C#): Код:
Если интересует - позже могу проверить (дома) и если потребуется - подправить код. На Windows XP Rus x86 SP3 результат работы кода такой: ![]() Последний раз редактировалось hwd, 29.04.2010 в 12:56. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Андрей, ты уточни версию студии, .NET-а и прочих прибамбасов
![]() ![]() P.S. Кстати, я бы на твоем месте выложил уже скомпилированный код под разные версии AutoCAD'ов, если есть такая возможность...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
.Net Framework 4.0 сильно отличается от .Net Framework 3.5 SP1: - библиотека существенно переработана - библиотека занимает объём в 4 раза меньший, чем предыдущая версия (и это с учётом всех добавленных новшеств) Приведённый выше код работает только под версией 4.0, поскольку в версии 3.5 статический класс Environment не имеет свойства Is64BitOperatingSystem, с помощью которого я проверяю, присутствует ли ситуация, когда AutoCAD x86 установлен на Windows x64 (эту проверку выполнять обязательно, т.к. в таком случае следует обрабатывать иную ветвь реестра, как я уже писал выше). В свете выше указанного нюанса, для того, чтобы код работал под .Net Framework 3.5 SP1, в него следует внести ряд изменений, после чего рабочий вариант будет выглядеть так: Код:
Скомпилированная версия кода (под версию 3.5 SP1) прилагается ниже. Последний раз редактировалось hwd, 04.05.2010 в 11:35. |
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Почему неправильное? Скрипт Inno Setup извлекает только нужные мне значения (русских и английских версий чистого AutoCAD). Насколько я знаю, ключи для этих версий всегда одни и те же. Что же тут неправильного?
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
То есть на любое вертикальное приложение типа AutoCAD Architecture установить дополнение уже не получится.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Если вы желаете жёстко привязаться к определённой версии автокада - то можно и так, но ежели требуется автоматически находить все установленные версии автокада (чтобы можно было выбрать нужную из списка установленных и выполнить над ней действия) - в этом случае не следует фиксированно прописывать версии.
|
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Цитата:
Цитата:
P.S. Причём для 32-битной версии Windows. Все возможные варианты, включая Revit, ADT и т.п., я не могу проверить, поэтому ограничиваюсь голым AutoCAD. К тому же, проверка на C#, да ещё в NET 4.0, меня не удовлетворяет =/ |
|||
![]() |
|
||||
Цитата:
Цитата:
1. Код, который я показывал выше в топике, прекрасно работает в 32-битной Windows (о чем было написано). 2. Не важно на каком языке написать логику - хоть на лиспе. Алгоритм один и тот же. В примере показано, где именно в реестре следует искать информацию об установленных версиях автокадов. 3. Если бы вы внимательно читали, то заметили бы, что помимо версии для .Net 4.0 имеется и версия для .Net 3.5. писать нужно на том, чем хорошо владеете (не важно lisp или .net, главное, чтобы была возможность решать стоящие задачи, в данном случае алгоритм решения один для любого языка). |
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Цитата:
Я правильно понял алгоритм? Если программа устанавливается для AutoCAD 2007 с NET 2.0, этой версии на компьютере может и не быть - лучше не рисковать. |
|||
![]() |
|
||||
Информация об установленных версиях не ограничивается "ProductName". Вы же хотите знать в каком каталоге установлено приложение и т.п.
Все автокады регистрируются в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD. Пробежаться по ней в цикле и извлечь любую нужную информацию не трудно. Какие в этом сложности? |
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Цитата:
Так всё же, всегда ли одинаково значение ProductName для AutoCAD'ов? Т.е. для AutoCAD 2005 любых языковых пакетов значение ProductName всегда будет равно "AutoCAD 2005"? P.S. Ещё один вопрос: какие приложения, помимо чистого AutoCAD, гарантированно будут вести себя аналогично соотв. версии чистого AutoCAD? |
|||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
ShaggyDoc, еще актуально?
Мои чиселки (Autocad Mechanical 2010 и 2011): HKLM-Software-Autodesk-Autodesk Mechanical-Desktop- 14- MCAD-8005:407 -ACAD- AcadRel=R18.0 15- MCAD-9005:407 -ACAD- AcadRel=R18.1 Ось - винда 7 64х Всё есс-но на немецком (естесственно для меня ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
LaWaSH, и что?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Offtop: Автор давно не издавал звуков в этом топике, а народ всё отчитывается и отчитывается... Прямо паломничество какое-то ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
В продолжение темы. В AutoCAD версии 2012 изменилось содержание ключа ProductName - теперь это не "AutoCAD 2012", а что-то длинное. Как я понимаю, то же относится и к вертикальным решениям.
У меня вопрос вот какой: ключи "ProductName" для 64-разрядных версий AutoCAD в 64-разрядных ОС находятся в другом месте? Или путь тот же? |
|||
![]() |
|
||||
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ObjectARX. Расчленение и удаление proxy-объектов | Profan | Готовые программы | 293 | 08.04.2024 09:37 |
запуск программы из AutoCADа | kminas | Программирование | 19 | 15.06.2012 13:42 |
О создании темы (раздела) для новичков в AutoCAD. | Profan | Разное | 110 | 23.10.2008 10:01 |
AUTOCAD 2006 | Aragorn | AutoCAD | 14 | 01.04.2005 00:55 |
Что нового в AutoCAD 2005 | ilka_t | AutoCAD | 40 | 19.05.2004 16:48 |