none
ISAPI拡張dllから呼び出したcomのリモートファイルアクセス方法について RRS feed

  • 質問

  • Windows Server 2003上で、IIS 6.0をインストールし、IIS上で、ISAPI拡張dllを稼動させています。

    また、同ISAPI拡張dll内部では、COMコンポーネント(以後xxxxx.dllとします)を使用しています。

    予めregsvr32 xxxxx.dllで、レジストリに登録して後、ISAPI拡張dll内部では、当コンポーネントに、入力ファイル名、出力ファイル名を渡し、あるファイル処理を委託しています。

    しかし、入出力ファイルを、LANを経由した、リモートマシンに置いたとき、(例えば、\\remoteMachine\data\infile.dat)正常に、入出力ファイルをアクセスできません。

    アクセス拒否になります。


    ネットワークスニッファ、Ethereal を使用し、ネットワークのプロトコルを見てみると、SMBプロトコルで、Tree Connect And Requestが2回要求された後、Tree Connect AndX Response, Error: STATUS_ACCESS_DENIEDで、アクセスが拒否されています。

    SMBプロトコルのマニュアルを見ると、

    あるサーバに対するセッションを、同じユーザからは、2回以上開始できないという制限があります。

    従って、STATUS_ACCESS_DENIEDは、当制限に引っかかったものと思われます。

    尚、入出力ファイルが、Windows Server 2003上のローカルディレクトリにあるときは、問題なくCOMコンポーネントにより、ファイル処理が正常に完了します。

    また、COMコンポーネントに委託しているファイル処理を、ISAPI拡張dllの内部処理としたときには、当現象は、発生しませんでした。

    ISAPI拡張dllでは、入出力ファイルの存在をチェックしています。

    現象としては、ISAPI拡張dllと、COM間で、ファイルのアクセスの情報がうまく渡っていないような現象です。

    尚、当現象は、リモートマシンが、Windows マシンのときのみ発生します。

    リモートマシンが、unixのときは、正常にファイル処理が完了します。

    アクセス拒否が発生しないようにするには、どのようにしたら良いのか、ご教授下さい。

     

    2006年5月26日 9:23

すべての返信

  •  handsome_kazu さんからの引用

    尚、当現象は、リモートマシンが、Windows マシンのときのみ発生します。

    リモートマシンが、unixのときは、正常にファイル処理が完了します。



    そのリモートマシンのWindowsは、何でしょうか?
    Windows XP?それとも、Windows Server 2003?
    2006年5月26日 11:33
  • リモートマシンのOSは、Windows Server 2003、Windows 2000 Serverでした。

    どちらも、同じ現象です。

    ISAPI拡張から呼び出すComからは、アクセスできません。

    尚、同じComをアプリケーションから呼び出したときは、リモートのときも、アクセスできます。

     

    2006年5月26日 12:05