- PR -

ASPファイルオブジェクトの使用

1
投稿者投稿内容
のの
ベテラン
会議室デビュー日: 2004/11/10
投稿数: 88
投稿日時: 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 ]
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 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 を指定します。
のの
ベテラン
会議室デビュー日: 2004/11/10
投稿数: 88
投稿日時: 2006-10-30 09:20
おはようございます。
ご返答が遅くなり大変申し訳ございません。
認証が必要な件、よくわかりました。
ご教授頂いた方法を検討したいと思うのですが
何分、わからないことが多々あり、、、いくつか
ご質問させて下さい。
@具体的にIDとパスを参照させる「ACTIVEX DLL」は
 どう記述すれば良いのでしょうか??
AIDとパスを参照する「ACTIVEX DLL」を作成したとして
 その設定方法は、、、
 「コンポーネントサービス」
   「コンピュータ」
    「マイコンピュータ」
     「COM+ アプリケーション」
      「IIS Utilities」
 、、、の、「新規追加」で作成した「ACTIVEX DLL」を設定すれば
 良いのでしょうか?

よろしくお願い致します。


 


[ メッセージ編集済み 編集者: のの 編集日時 2006-10-30 10:06 ]
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-31 04:45
引用:
@具体的にIDとパスを参照させる「ACTIVEX DLL」は
 どう記述すれば良いのでしょうか??



なんか誤解しているようですが、今回作成する「ACTIVEX DLL」には、実行する account password は記述しません。指定するのは後述のとおり、COM+ に登録するときに指定します。

で、なにがわからないんでしょうか?とりあえず、ASP から扱う COM の作成方法がわからないということなら。

COM を Visual Basic で作成しよう! - Part 1 -
Visual Basic でのビジネス層サーバーの実装
[INFO] ASP で実行する Visual Basic コンポーネントの設計ガイドライン

引用:

AIDとパスを参照する「ACTIVEX DLL」を作成したとして
 その設定方法は、、、
 「コンポーネントサービス」
   「コンピュータ」
    「マイコンピュータ」
     「COM+ アプリケーション」
      「IIS Utilities」
 、、、の、「新規追加」で作成した「ACTIVEX DLL」を設定すれば
 良いのでしょうか?



「COM+ アプリケーション」のところで、新規作成を行い、「サーバ アプリケーション」を指定して、実行する(対象の network resource へ接続可能な) account, password を登録します。
あとは、作成された COM+ applicaiton に 1. で作成した DLL を登録すれば OK です。
のの
ベテラン
会議室デビュー日: 2004/11/10
投稿数: 88
投稿日時: 2006-10-31 08:38
おはようございます。
朝早くにご返信誠にありがとうございます。
誤解というか、全くわからないことばかりで申し訳ありません。
教えて頂いたことは全て理解できました!
それを踏まえて、また、いくつかご質問させて下さい。
@作成する「ACTIVEX DLL」は、今回でいうと、
 ある意味”空”で良いということですよね?
AASPソースの方へは、何らかの記述は必要なのでしょうか?

よろしくお願い致します。


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

誤解というか、全くわからないことばかりで申し訳ありません。
教えて頂いたことは全て理解できました!
それを踏まえて、また、いくつかご質問させて下さい。
@作成する「ACTIVEX DLL」は、今回でいうと、
 ある意味”空”で良いということですよね?



ありゃりゃ、中途半端に理解したなんていうのやめましょう。

今回の本題は何でしょう?
ACL で network resource に接続することができないということですよね。
で、それを回避するため、network resource を扱う部分は別の account で実行するべきというのが本題で、そのための方法が COM+ server application です。
# それが理解できていれば、自ずと答えはわかるはずです。

引用:

AASPソースの方へは、何らかの記述は必要なのでしょうか?



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

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