Question

Etant donné que les applications HTA sont hébergées dans MSHTA.exe, comment fournit-on un manifeste? De plus, je suppose que la fourniture d’un fichier MSHTA.exe.manifest pourrait potentiellement endommager d’autres applications HTA?

Était-ce utile?

La solution

Sur Vista +, MSHTA.exe a un manifeste incorporé, qui a priorité sur les manifestes externes. Votre suggestion n’est donc pas une option.

Sous XP / 2003, oui, votre suggestion fonctionnerait, même si sa forme serait mauvaise, tout comme le fait de supprimer des fichiers dans System32 pour modifier le comportement d'un binaire système (surtout assurez-vous que tous les enregistrements que vous mettez dans le manifeste sont des objets). vous êtes le seul à vous soucier).

La solution appropriée, disponible à partir de Win2003, consiste à utiliser le Microsoft.Windows.ActCtx pour instancier votre objet à l'aide d'une référence de manifeste explicite.

Par exemple:

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

Peut-être que, si cela doit fonctionner également sur XP, un chemin à suivre est une combinaison des deux solutions.

Autres conseils

Modifier: Ma réponse est fausse, mais je la laisse ici pour éviter des réponses erronées similaires:)

Si vous vous demandez si vous pouvez accéder à un objet COM sans l'enregistrer sur la machine, je pense que la réponse est provisoire. Cependant, le travail que vous auriez à faire serait considérable et impliquerait la mise en œuvre de la plupart du code de bas niveau fourni par la plupart des outils de développement (Delphi, .NET, JAVA). Vous devez vous connecter directement avec la dll (comme une dll normale), interroger ses interfaces et appeler vos méthodes.

Si vous avez des connaissances en C, C ++, le mode d'accès à COM à partir de ces langages vous donnera des indications.

Désolé, je ne peux plus vous aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top