Frage

Da HTA-Anwendungen werden innerhalb MSHTA.exe gehostet, wie man ein Manifest bereitstellt? Außerdem nehme ich an einem MSHTA.exe.manifest Bereitstellung könnte möglicherweise andere HTA-Anwendungen brechen?

War es hilfreich?

Lösung

Auf Vista +, MSHTA.exe hat ein eingebettetes Manifest, den Vorrang vor externen Manifesten nimmt, so dass Ihr Vorschlag ist keine Option.

Unter XP / 2003, ja, würde Ihr Vorschlag arbeiten, obwohl es schlechte Form sein würde, wie Dateien in System32 dropping das Verhalten eines System binär zu ändern (vor allem dafür sorgen, dass jede Registrierung Sie im Manifest setzen Objekte Sie sind der einzige, etwa) zu kümmern.

Die richtige Lösung, auf Win2003 und oben, ist die Microsoft.Windows.ActCtx Objekt instanziiert das Objekt gegeben explizit Manifest Referenz.

Zum Beispiel:

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

Vielleicht, wenn dies auch auf XP arbeiten muß, ein Weg, den Sie nehmen können, ist eine Kombination beiden Lösungen.

Andere Tipps

Edit: Meine Antwort ist falsch, aber ich werde es hier läßt keine ähnlichen falschen Antworten zu vermeiden:)


Wenn Sie die Frage ist, können Sie ein COM-Objekt zuzugreifen, ohne dass es auf der Maschine zu registrieren, dann denke ich, die Antwort ein vorläufiges ist ja. Allerdings ist die Arbeit, die Sie brauchen würden, zu tun wäre, substanziell und würden bedeuten, eine Menge von dem niedrigen Niveau Code implementieren, die die meisten Entwicklungs-Tools für Sie selbstverständlich zur Verfügung stellen (Delphi, .NET, Java). Sie würden mit der DLL-Schnittstelle müssen direkt (wie Sie eine normale DLL würde), seine Schnittstellen abfragen und Ihre Methoden aufrufen.

Wenn Sie C, C ++ Kenntnisse, die Art und Weise COM aus diesen Sprachen zugegriffen wird, würden Sie einige Hinweise.

Leider habe ich irgend mehr Hilfe sein kann nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top