У меня есть устаревшая система, содержащая старый COM-компонент, работающий под COM +. Нам нужно переименовать этот старый компонент, но у нас нет исходного кода. Есть ли способ переименовать компонент (а не приложение) без перекомпиляции?Есть ли способ переименовать COM-компонент, не перекомпилируя исходный код?
ответ
«Имя» для класса СОМ известен как ProgID
:
Программный идентификатор (ProgID) является запись в реестре, который может быть связан с CLSID. Как и CLSID, ProgID идентифицирует класс, но с меньшей точностью, поскольку он не гарантированно уникален во всем мире.
Целью идентификатора является предоставление отображения первичного идентификатора для класса, CLSID
. Следовательно, вы можете вручную создать другой/альтернативный ключ с другим именем, отображающим один и тот же CLSID, и он собирается сделать этот трюк.
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<New-ProgID>\CLSID
- (значение по умолчанию) =
<Same-CLSID>
Имейте в виду, что ключ для 32-битного компонента на 64-битной системе:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\<New-ProgID>\CLSID
CLSID
- основной элемент вашего интереса, вы, возможно, захотите дублировать все подразделы и значения с вашего оригинального ключа ProgID
(в частности, VersionIndependentProgID
, если у вас есть это для вашего класса).
Затем COM + специфическая часть является ProgID подключ под CLSID, где DCOMCNG (вы ссылаетесь в комментариях как "COM + Applications | MyApplication | Components") принимает имена из:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\<Your-CLSID>\ProgID
- (по умолчанию значение) =
<ProgID>
Переименование этого эффекта повлияет на приложение COM +. Те же самые ключи/значения предположительно используются в самом приложении (это верно для первых двух, и я не уверен в последнем конкретном COM +).
Не совсем, имя, которое использует COM +, происходит из 'Classes \ CLSID \ {guid} \ ProgID'. В качестве примера рассмотрим {2C3E140B-7A0D-42d1-B2AA-D343500A90CF}. Я не знаю, насколько важно соответствовать имени ключа Classes \ ProgId. –
@HansPassant: Я стою исправлено здесь - DCOMCNFG определенно перечисляет оттуда.Однако нет другого сопоставления с CLSID, поэтому я предполагаю, что создание экземпляра будет обычным способом. Этот подраздел вряд ли используется для возврата к CLSID, поскольку он уже находится под его CLSID ключом. –
Заметьте, я не нашел свою COM + информацию точно, где вы сказали, я действительно нашел ее под HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Classes \ CLSID \
- 1. Есть ли способ зашифровать исходный код C#?
- 2. Есть ли способ переименовать 'set'
- 3. Есть ли существующий способ вернуть исходный код в CodeCompileUnit?
- 4. Есть ли способ увидеть исходный код Google Apps для Google?
- 5. Есть ли способ переименовать ключи Strong Parameter?
- 6. Есть ли способ скопировать исходный код Qt в другое место?
- 7. Есть ли способ просмотреть исходный код функции из Racket REPL?
- 8. Есть ли способ создать исходный код для Android от php?
- 9. Есть ли способ скрыть исходный код из всех браузеров?
- 10. Есть ли способ увидеть исходный код метода по умолчанию JavaScript?
- 11. Есть ли способ просмотреть исходный код метода с консоли Rails?
- 12. Есть ли способ вставить исходный javascript в код parenscript?
- 13. Есть ли способ аннотировать исходный код Python с результатами профилирования?
- 14. Есть ли способ скомпилировать, чтобы скрыть исходный код?
- 15. Есть ли способ переименовать класс, созданный D3?
- 16. Есть ли способ переименовать развернутое приложение ClickOnce?
- 17. Есть ли способ переименовать команды vim?
- 18. Есть ли способ переименовать имя cookie RequestVerificationToken?
- 19. Есть ли способ переименовать кнопку «Отправить»?
- 20. Есть ли способ не повторять этот код?
- 21. Есть ли способ «выделить» код?
- 22. Исходный код Android: есть ли код для управления SIM-картами?
- 23. Есть ли способ переименовать каталоги рекурсивно, не используя sed или переименовать?
- 24. Есть ли способ переопределить/переименовать/переназначить функцию в php?
- 25. Есть ли способ обфускать исходный код SSRS, чтобы он не мог быть реконструирован?
- 26. Есть ли способ указать, что форматирование Дарт не изменяет исходный код, а просто форматирует его?
- 27. Есть ли способ, чтобы никто не мог получить исходный код приложения из exe-файла?
- 28. Rails: Есть ли способ переименовать столбцы без изменения контроллеров?
- 29. Есть ли способ узнать, не используется ли код в java?
- 30. Есть ли способ переименовать репозиторий на Bitbucket, используя их API
Теоретически вы можете попытаться просто изменить имя самого файла. Я предполагаю, что у вас есть источник устаревшей системы, если вы этого не сделаете, то, что вы хотите, невозможно. –
Я уже пробовал переименовать файл. Не повезло. У источника, который у меня есть, не гарантируется то, что на самом деле находится в производстве. Это беспорядок. –
Если у вас нет источника программного обеспечения для производства, то то, что вы хотите, невозможно. –