Pregunta

Dado que las aplicaciones HTA están alojadas dentro de MSHTA.exe, ¿cómo se proporciona un manifiesto? Además, ¿supongo que proporcionar un MSHTA.exe.manifest podría dañar otras aplicaciones de HTA?

¿Fue útil?

Solución

En Vista +, MSHTA.exe tiene un manifiesto incrustado, que tiene prioridad sobre los manifiestos externos, por lo que su sugerencia no es una opción.

En XP / 2003, sí, su sugerencia funcionaría, aunque sería una mala forma, ya que colocar archivos en System32 para modificar el comportamiento de un sistema binario (especialmente asegúrese de que cualquier registro que ponga en el manifiesto sean objetos eres el único a quien le importa).

La solución adecuada, disponible en Win2003 y superior, es utilizar Microsoft.Windows.ActCtx para instanciar su objeto dada una referencia explícita de manifiesto.

Por ejemplo:

var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx");
actCtx.Manifest = "myregfree.manifest";
var obj =  actCtx.CreateObject("MyObj");   

Quizás, si esto también debe funcionar en XP, un camino que puede tomar es una combinación de ambas soluciones.

Otros consejos

Editar: Mi respuesta es incorrecta, pero la dejaré aquí para evitar respuestas incorrectas similares :)


Si su pregunta es si puede acceder a un objeto COM sin registrarlo en la máquina, entonces creo que la respuesta es un sí tentativo. Sin embargo, el trabajo que necesitaría hacer sería sustancial y significaría implementar una gran parte del código de bajo nivel que la mayoría de las herramientas de desarrollo le proporcionan de forma habitual (Delphi, .NET, JAVA). Tendría que interactuar con el dll directamente (como lo haría con un dll normal), consultar sus interfaces y llamar a sus métodos.

Si tiene conocimiento de C, C ++, la forma en que se accede a COM desde estos lenguajes le daría algunos indicadores.

Lo siento, no puedo ser de más ayuda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top