Можно ли использовать бесплатный для регистрации COM с приложениями HTA?
-
20-08-2019 - |
Вопрос
Поскольку приложения HTA размещаются внутри MSHTA.exe как предоставить манифест?Кроме того, я предполагаю, что предоставление MSHTA.exe.manifest потенциально может привести к поломке других приложений HTA?
Решение
В Vista + MSHTA.exe имеет встроенный манифест, который имеет приоритет над внешними манифестами, поэтому ваше предложение не подходит.
В XP / 2003, да, ваше предложение сработало бы, хотя это было бы дурным тоном, как удаление файлов в System32 для изменения поведения системного двоичного файла (особенно убедитесь, что любая регистрация, которую вы вводите в манифест, - это объекты, о которых заботитесь только вы).
Правильное решение, доступное на Win2003 и выше, заключается в использовании Майкрософт.Windows.ActCtx объект для создания экземпляра вашего объекта с указанием явной ссылки на манифест.
Например:
var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx");
actCtx.Manifest = "myregfree.manifest";
var obj = actCtx.CreateObject("MyObj");
Возможно, если это должно работать и в XP, то путь, который вы можете выбрать, представляет собой комбинацию обоих решений.
Другие советы
Редактировать: Мой ответ неверен, но я оставлю его здесь, чтобы избежать подобных неправильных ответов :)
Если вы спрашиваете, можете ли вы получить доступ к COM-объекту, не регистрируя его на компьютере, то я думаю, что ответом будет предварительное "да".Однако работа, которую вам нужно было бы выполнить, была бы существенной и означала бы реализацию большого количества низкоуровневого кода, который большинство инструментов разработки предоставляют вам как нечто само собой разумеющееся (Delphi, .NET, JAVA).Вам нужно будет напрямую взаимодействовать с библиотекой dll (как с обычной библиотекой dll), запрашивать ее интерфейсы и вызывать свои методы.
Если у вас есть знания C, C ++, то способ доступа к COM с этих языков дал бы вам несколько советов.
Извините, я больше ничем не могу вам помочь.