- - PR -
ActiveXコントロールをログインユーザーとは別のユーザーでブラウザにインストールする方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-13 00:04
ueです。
ちゃっぴさん、渋木さん、ご指摘ありがとうございます。ユーザーがバッチファイルの中を見たらアウトですね。 toiryさん、安全性を損なわない手段をご検討ください。 | ||||||||
|
投稿日時: 2006-05-13 01:31
そもそも、ActiveX conrol を install させない security policy 環境下で、ActiveX control を使用する設計を行うこと自体が矛盾しているんですが・・・
# 使えないなら、Web 経由で ActiveX control を呼び出すよりも、 # はなから Windows application として作成したほうがいいと思いますし・・・ とりあえず、そのような要件があるんであれば、SMS のような製品がないと運用が回らんと思いますが・・・ というのはおいておいて、ちょっと方法を検討してみるとして・・・ ActiveX Control を格納している cab file 内の inf file を編集することによって、任意のprogram を動かすことは可能です。 具体的には、hook を定義してやって、その hook section で run=任意の command を指定してやります。 Using Hooks で、任意の program を呼び出すことはできるんですが、偽装させるとなると password が必須になるので、
ということになるので、server 側の処理を呼び出すような(Web Service とか DCOM とか) program を作成してそれを呼び出します。 ってここまで書いていて思いましたけど、こっちのほうがよっぽどめんどくさいですね。 やっぱり、全体の設計を見直したほうがいいんじゃないかと・・・ | ||||||||
|
投稿日時: 2006-05-13 02:50
南部です。
スクリプトサンプル 使ったことありませんが、 対象マシンのID&PASSがあればいけそうなので、 勝手にインストールしてしまうか、 情報さえ揃っていれば、Webアプリへのログイン時にクライアントへ インストールすることも可能かもしれませんね。 | ||||||||
|
投稿日時: 2006-05-13 03:22
この方法には、大きくいって2つの問題が存在します。(細かいのは他にもいくつも・・・) # ただし、回避は一応可能です。面倒ですが・・・ 1. 標準で result code を得る手段がない。 実行結果を返すような処理を client で実行する program に組み込む必要があります。 標準で帰ってくるのは、process を呼び出せたか否かだけで、program の実行結果は返ってきません。 2. 非同期実行である Process を create するんですから当然ですね。 Remote の Process の終了を監視する処理が別途必要になります。 WMI の event を使うにしても、取得漏れが発生する可能性があります。 それから、Win32_Process の Create method では、remote に配置されている file を呼び出せなかったと記憶していますので、事前に client に配置する処理が必要でしょう。 あとは、download & install の実行時間を考慮すると、client 側で動かす program に ActiveX control の version check を行う処理を実装することが必要になるでしょう。 | ||||||||
|
投稿日時: 2006-05-13 04:19
南部です。
ログインしたユーザの情報を元に、 Webサーバがクライアントのマシンを特定し、 管理者IDとパスワードを取得し、 リモートインストールを行う。 で、プロセス(リモートインストール)を待機して、 ExitCodeを取れると思いますが、、、 そんなに甘くないですかね、、、 | ||||||||
|
投稿日時: 2006-05-13 17:05
ここの、仕様が矛盾していることに対して、顧客はなんと言っているのでしょう? ActiveX Object を勝手にインストールさせないが、イントラネット仕様だからインストールしても良いって、なんか変。 こういう矛盾するところは、きっちりと「なぜこうなった」というところを文書として残しておかないと、後々の火種になります。 # 何月何日、どう決まった。。。ではなく、何月何日、誰が、どういって、どういうやりとりがあった結果、こう決まった、、、と残す。 | ||||||||
|
投稿日時: 2006-05-13 18:45
Win32_Product class のほうですか、これは未確認です。 # 完全に、誤解していました。わたしが予想していたのは、Win32_Process のほうです。 ただ、この Sample だと、wbemImpersonationLevelDelegate を利用していることから、実行する user は domain user 限定でかつ、認証は kerberos 限定、policy で「コンピュータに対する委任」をあらかじめ許可することが必要ですね。 Q 11. リモート操作に 3 台目のコンピュータが関与している場合にリモート操作が失敗するのですが、何が原因でしょうか security に関与することなので、これが認められるかというのが問題になるでしょうね。 | ||||||||
|
投稿日時: 2006-05-13 19:18
wbemImpersonationLevelDelegate が本当に必要なのか?疑問に思っていましたが・・・
実験してみたところ、やっぱり必要ないですね。 wbemImpersonationLevelImpersonate で十分でしょう。 ただし、その場合事前に msi を install する computer 上に copy しておくことが必要になりますが。Network 越しは例の制限に引っかかるので無理です。 # そっか、Windows Installer を利用する場合、この方法が使えますね。 ちなみに毎回 install を避けるため、Win32_Product に対象の version が存在するか調べたほうがいいですね。 |