- PR -

ActiveXコントロールをログインユーザーとは別のユーザーでブラウザにインストールする方法

投稿者投稿内容
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-05-13 00:04
ueです。
引用:

ちゃっぴさんの書き込み (2006-05-12 14:40) より:
それって、user に Administrator の password を教えてるのと一緒じゃありません?


引用:

渋木宏明(ひどり)さんの書き込み (2006-05-12 22:50) より:
この手のツールで使われる暗号化手法はそれほど強固なものではないので、パスワードの流出には十分留意する必要があります。一応念のため。

仮にそういったツールを使用するとしても、通常の管理業務に使用している管理者のアカウントの使用はさけるべきです。


ちゃっぴさん、渋木さん、ご指摘ありがとうございます。ユーザーがバッチファイルの中を見たらアウトですね。

toiryさん、安全性を損なわない手段をご検討ください。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 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 が必須になるので、

引用:

渋木宏明(ひどり)さんの書き込み (2006-05-12 22:50) より:
この手のツールで使われる暗号化手法はそれほど強固なものではないので、パスワードの流出には十分留意する必要があります。一応念のため。

仮にそういったツールを使用するとしても、通常の管理業務に使用している管理者のアカウントの使用はさけるべきです。



ということになるので、server 側の処理を呼び出すような(Web Service とか DCOM とか) program を作成してそれを呼び出します。

ってここまで書いていて思いましたけど、こっちのほうがよっぽどめんどくさいですね。

やっぱり、全体の設計を見直したほうがいいんじゃないかと・・・
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-05-13 02:50
南部です。

スクリプトサンプル

使ったことありませんが、
対象マシンのID&PASSがあればいけそうなので、
勝手にインストールしてしまうか、
情報さえ揃っていれば、Webアプリへのログイン時にクライアントへ
インストールすることも可能かもしれませんね。

ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-05-13 03:22
引用:

nanbuさんの書き込み (2006-05-13 02:50) より:
スクリプトサンプル

使ったことありませんが、
対象マシンのID&PASSがあればいけそうなので、
勝手にインストールしてしまうか、
情報さえ揃っていれば、Webアプリへのログイン時にクライアントへ
インストールすることも可能かもしれませんね。



この方法には、大きくいって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 を行う処理を実装することが必要になるでしょう。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-05-13 04:19
南部です。

引用:

1. 標準で result code を得る手段がない。
実行結果を返すような処理を client で実行する program に組み込む必要があります。
標準で帰ってくるのは、process を呼び出せたか否かだけで、program の実行結果は返ってきません。

2. 非同期実行である
Process を create するんですから当然ですね。
Remote の Process の終了を監視する処理が別途必要になります。
WMI の event を使うにしても、取得漏れが発生する可能性があります。




ログインしたユーザの情報を元に、
Webサーバがクライアントのマシンを特定し、
管理者IDとパスワードを取得し、
リモートインストールを行う。
で、プロセス(リモートインストール)を待機して、
ExitCodeを取れると思いますが、、、
そんなに甘くないですかね、、、


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-05-13 17:05
引用:

toiryさんの書き込み (2006-05-12 13:39) より:

その際に、クライアントのブラウザに帳票表示用のビュアー(ActiveXコントロール)をインストールする必要があります。

しかし、今回導入するクライアント様ではPCにログインしたユーザーにはActiveXコントロールをインストール権限が付与されていません。


 ここの、仕様が矛盾していることに対して、顧客はなんと言っているのでしょう?
 ActiveX Object を勝手にインストールさせないが、イントラネット仕様だからインストールしても良いって、なんか変。

 こういう矛盾するところは、きっちりと「なぜこうなった」というところを文書として残しておかないと、後々の火種になります。
# 何月何日、どう決まった。。。ではなく、何月何日、誰が、どういって、どういうやりとりがあった結果、こう決まった、、、と残す。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-05-13 18:45
引用:

ログインしたユーザの情報を元に、
Webサーバがクライアントのマシンを特定し、
管理者IDとパスワードを取得し、
リモートインストールを行う。
で、プロセス(リモートインストール)を待機して、
ExitCodeを取れると思いますが、、、
そんなに甘くないですかね、、、



Win32_Product class のほうですか、これは未確認です。
# 完全に、誤解していました。わたしが予想していたのは、Win32_Process のほうです。

ただ、この Sample だと、wbemImpersonationLevelDelegate を利用していることから、実行する user は domain user 限定でかつ、認証は kerberos 限定、policy で「コンピュータに対する委任」をあらかじめ許可することが必要ですね。

Q 11. リモート操作に 3 台目のコンピュータが関与している場合にリモート操作が失敗するのですが、何が原因でしょうか

security に関与することなので、これが認められるかというのが問題になるでしょうね。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-05-13 19:18
wbemImpersonationLevelDelegate が本当に必要なのか?疑問に思っていましたが・・・

実験してみたところ、やっぱり必要ないですね。
wbemImpersonationLevelImpersonate で十分でしょう。

ただし、その場合事前に msi を install する computer 上に copy しておくことが必要になりますが。Network 越しは例の制限に引っかかるので無理です。
# そっか、Windows Installer を利用する場合、この方法が使えますね。

ちなみに毎回 install を避けるため、Win32_Product に対象の version が存在するか調べたほうがいいですね。

スキルアップ/キャリアアップ(JOB@IT)