HTA アプリケーションは MSHTA.exe 内でホストされているため、マニフェストを提供するにはどうすればよいでしょうか? さらに、MSHTA.exe.manifest を提供すると、他の HTA アプリが壊れる可能性があると思いますか?
2 に答える
Vista 以降では、MSHTA.exe にはマニフェストが埋め込まれており、外部マニフェストよりも優先されるため、あなたの提案はオプションではありません。
XP / 2003では、はい、システムバイナリの動作を変更するためにSystem32にファイルをドロップするのと同様に、悪い形ですが、あなたの提案はうまくいきます(特に、マニフェストに入れる登録があなたのオブジェクトであることを確認してください気にするのは1つだけです)。
Win2003 以降で利用可能な適切な解決策は、Microsoft.Windows.ActCtxオブジェクトを使用して、明示的なマニフェスト参照を指定してオブジェクトをインスタンス化することです。
例えば:
var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx");
actCtx.Manifest = "myregfree.manifest";
var obj = actCtx.CreateObject("MyObj");
おそらく、これが XP でも機能する必要がある場合は、両方のソリューションを組み合わせることになります。
編集:私の答えは間違っていますが、同様の間違った答えを避けるためにここに残します:)
マシンに登録せずに COM オブジェクトにアクセスできるかどうかという質問がある場合、答えは暫定的にイエスだと思います。ただし、実行する必要がある作業は相当なものであり、ほとんどの開発ツール (Delphi、.NET、JAVA) が当然提供する多くの低レベル コードを実装することを意味します。dll と直接やり取りし (通常の dll のように)、そのインターフェイスを照会し、メソッドを呼び出す必要があります。
C、C++ の知識があれば、これらの言語から COM にアクセスする方法が参考になります。
申し訳ありませんが、これ以上お役に立てません。