- - PR -
ASPファイルオブジェクトの使用
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-25 14:56
お世話になります。
ASPにて、あるサーバー内のCドライブの直下に「test」という名前の ディレクトリを作成したいと思い、下記のような記述をしました。 ********************************************************************* Set objectFILE = CreateObject("Scripting.FileSystemObject") objectFILE.CreateFolder "¥¥TEST=SERVER¥c¥test" ********************************************************************* そして、ウェブ上から上記ASPを起動すると、エラーとなり下記のようなメッセージが 表示されました。 ********************************************************************* ログオン失敗!!ユーザー名を認識できないか、またはパスワードが間違っています ********************************************************************* それもそのはず、「¥¥TEST=SERVER」にアクセスするには IDとパスワードを要求されますから。 こういった場合、ASP内の記述で、IDとパスを併せて記述するなんて 方法あるのでしょうか?または、何か別の方法があるのでしょうか? お知恵を拝借させて頂きたく、よろしくお願いします。 サーバーOS/2000です。 [ メッセージ編集済み 編集者: のの 編集日時 2006-10-25 14:57 ] | ||||||||
|
投稿日時: 2006-10-26 00:49
UNC で指定していて error になるってことでしょうか?
ASP で匿名認証の場合、ASP application は default で 'IUSR_hostname' で動作します。 で、この user で network resource に接続しようとすると当然こけます。 というのは、'IUSR_hostname' という account は接続先には当然存在しないでしょうし、 存在したとしても、password が違っています。 # IIS の匿名 account は default では、IIS 自体が定期的に password を変更しているため とりあえず、回避策はいろいろとありますが、security を考慮すると下記で指摘したように COM+ server application を利用した偽装を用いるのがよいでしょう。 ネットワークドライブへのアップロードの設定方法について 具体的な方法を書くと、VB6.0 等で ASP から呼び出し可能な ActiveX dll を作成し、それを COM+ に server application として登録すればいいです。 COM+ server application で実行する account には当然ですが、対象の network resource を扱える account を指定します。 | ||||||||
|
投稿日時: 2006-10-30 09:20
おはようございます。
ご返答が遅くなり大変申し訳ございません。 認証が必要な件、よくわかりました。 ご教授頂いた方法を検討したいと思うのですが 何分、わからないことが多々あり、、、いくつか ご質問させて下さい。 @具体的にIDとパスを参照させる「ACTIVEX DLL」は どう記述すれば良いのでしょうか?? AIDとパスを参照する「ACTIVEX DLL」を作成したとして その設定方法は、、、 「コンポーネントサービス」 「コンピュータ」 「マイコンピュータ」 「COM+ アプリケーション」 「IIS Utilities」 、、、の、「新規追加」で作成した「ACTIVEX DLL」を設定すれば 良いのでしょうか? よろしくお願い致します。 [ メッセージ編集済み 編集者: のの 編集日時 2006-10-30 10:06 ] | ||||||||
|
投稿日時: 2006-10-31 04:45
なんか誤解しているようですが、今回作成する「ACTIVEX DLL」には、実行する account password は記述しません。指定するのは後述のとおり、COM+ に登録するときに指定します。 で、なにがわからないんでしょうか?とりあえず、ASP から扱う COM の作成方法がわからないということなら。 COM を Visual Basic で作成しよう! - Part 1 - Visual Basic でのビジネス層サーバーの実装 [INFO] ASP で実行する Visual Basic コンポーネントの設計ガイドライン
「COM+ アプリケーション」のところで、新規作成を行い、「サーバ アプリケーション」を指定して、実行する(対象の network resource へ接続可能な) account, password を登録します。 あとは、作成された COM+ applicaiton に 1. で作成した DLL を登録すれば OK です。 | ||||||||
|
投稿日時: 2006-10-31 08:38
おはようございます。
朝早くにご返信誠にありがとうございます。 誤解というか、全くわからないことばかりで申し訳ありません。 教えて頂いたことは全て理解できました! それを踏まえて、また、いくつかご質問させて下さい。 @作成する「ACTIVEX DLL」は、今回でいうと、 ある意味”空”で良いということですよね? AASPソースの方へは、何らかの記述は必要なのでしょうか? よろしくお願い致します。 | ||||||||
|
投稿日時: 2006-10-31 23:02
ありゃりゃ、中途半端に理解したなんていうのやめましょう。 今回の本題は何でしょう? ACL で network resource に接続することができないということですよね。 で、それを回避するため、network resource を扱う部分は別の account で実行するべきというのが本題で、そのための方法が COM+ server application です。 # それが理解できていれば、自ずと答えはわかるはずです。
COM を Visual Basic で作成しよう! - Part 1 - ちゃんと読んでください。具体的な方法までちゃんと載っています。 [追記] 以前偽装と書きましたが、COM+ server application を利用した場合、厳密には偽装ではありません。COM+ server application として登録された DLL は out process (つまり、呼び出し元と別の process) で起動されるため、process (thread) 内で偽装するのとは根本的に違っています。このことに関しては下記で説明されています。 COM/COM+ セキュリティ (その2) もちょっと補足すると、COM+ server application として登録された DLL は process の image name 'dllhost.exe' で、COM+ server application で登録した資格情報を用いて起動されます。 ただし、別の資格情報を用いて resource を扱うということに関してはどちらも同じです。 [/追記] [ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-10-31 23:22 ] |
1