Domanda

Dato che le applicazioni HTA sono ospitate in MSHTA.exe come si può fornire un manifest? Inoltre suppongo che fornire un MSHTA.exe.manifest potrebbe potenzialmente interrompere altre app HTA?

È stato utile?

Soluzione

Su Vista +, MSHTA.exe ha un manifest incorporato, che ha la priorità sui manifest esterni, quindi il tuo suggerimento non è un'opzione.

Su XP / 2003, sì, il tuo suggerimento funzionerebbe, anche se sarebbe una cattiva forma, così come il rilascio di file in System32 per modificare il comportamento di un file binario di sistema (soprattutto assicurati che qualsiasi registrazione che inserisci nel manifest sia un oggetto sei l'unico a cui interessarti).

La soluzione corretta, disponibile su Win2003 e versioni successive, è utilizzare Microsoft.Windows.ActCtx oggetto per creare un'istanza dell'oggetto dato un riferimento manifest esplicito.

Ad esempio:

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

Forse, se questo deve funzionare anche su XP, un percorso che potresti prendere è una combinazione di entrambe le soluzioni.

Altri suggerimenti

Modifica: la mia risposta è sbagliata, ma la lascerò qui per evitare simili risposte sbagliate :)


Se la tua domanda è: puoi accedere a un oggetto COM senza registrarlo sulla macchina, allora penso che la risposta sia un provvisorio sì. Tuttavia, il lavoro che dovresti fare sarebbe sostanziale e significherebbe implementare molto del codice di basso livello che la maggior parte degli strumenti di sviluppo ti fornisce, ovviamente (Delphi, .NET, JAVA). Dovresti interfacciarti direttamente con la DLL (come faresti con una normale DLL), interrogare le sue interfacce e chiamare i tuoi metodi.

Se hai conoscenza C, C ++, il modo in cui si accede a COM da queste lingue ti darebbe alcuni suggerimenti.

Mi dispiace, non posso essere di ulteriore aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top