Поскольку приложения HTA размещаются в MSHTA.exe, как можно предоставить манифест? Кроме того, я предполагаю, что предоставление MSHTA.exe.manifest потенциально может нарушить работу других приложений HTA?
Можно ли использовать COM без регистрации с приложениями HTA?
Ответы (2)
В Vista + MSHTA.exe имеет встроенный манифест, который имеет приоритет над внешними манифестами, поэтому ваше предложение не подходит.
В XP / 2003, да, ваше предложение будет работать, хотя это будет плохой тон, как и удаление файлов в System32 для изменения поведения системного двоичного файла (особенно убедитесь, что любая регистрация, которую вы вводите в манифест, является объектами, которыми вы являетесь только один, о котором нужно заботиться).
Правильным решением, доступным в Win2003 и выше, является использование Microsoft.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 с этих языков может дать вам несколько указателей.
Извините, я больше ничем не могу помочь.