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