Можно ли использовать без регистрации COM с приложениями HTA? - PullRequest
4 голосов
/ 27 января 2009

Поскольку приложения HTA ​​размещаются в MSHTA.exe, как можно предоставить манифест? Кроме того, я предполагаю, что предоставление MSHTA.exe.manifest может потенциально сломать другие приложения HTA?

Ответы [ 2 ]

4 голосов
/ 19 апреля 2009

В 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, путь, который вы можете выбрать, представляет собой комбинацию обоих решений.

0 голосов
/ 06 февраля 2009

Редактировать: Мой ответ неправильный, но я оставлю его здесь, чтобы избежать подобных неправильных ответов:)


Если вы спрашиваете, можете ли вы получить доступ к COM-объекту, не регистрируя его на компьютере, тогда я думаю, что ответ является пробным да. Однако работа, которую вам нужно будет сделать, будет существенной и будет означать реализацию большого количества низкоуровневого кода, который, как правило, предоставляется большинством инструментов разработки (Delphi, .NET, JAVA). Вам нужно было бы взаимодействовать с dll напрямую (как если бы вы были обычной dll), запрашивать ее интерфейсы и вызывать ваши методы.

Если у вас есть знания C, C ++, способ доступа к COM из этих языков даст вам несколько советов.

Извините, я больше не могу помочь.

...