小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


クラシックASPでWebサーバとは別のサーバにファイルを作成する方法

はじめに

クラシックASP(Active Server Pages)でIISが動作しているサーバとは別のサーバ上にファイルを作成する方法を調べたので、まとめてみました。

別サーバ(リモートサーバ)にファイルを作成する
  1. IISの動作しているWebサーバAとネットワークで繋がっているサーバBを用意する。
  2. サーバBに対して、WebサーバのIUSR_XXXと同じ名前、同じパスワードのユーザを作成する。IUSR_XXXのパスワードを調べるには、以下のエントリを参照してください。
  3. サーバBに共有ディレクトリを作成します。
  4. 共有ディレクトリに新しく作成したユーザの書き込み権を付加します。
  5. 以下のようなファイルを作成するスクリプトを実行します。
リモートサーバにファイルを作成するコード
<% Option Explicit  %>
<script language=vbscript runat=server>

Call Main()
Sub Main()
  On Error Resume Next
  
  Dim fso
  Dim tso
  
  Set fso = Server.CreateObject("Scripting.FileSystemObject")
  
  Set tso = fso.CreateTextFile("\\コンピュータ名\共有ディレクトリ\hoge.txt", true)
  If Err.Number <> 0 Then
    Call Response.Write(Err.Number & "<BR>")
    Call Response.Write(Err.Source & "<BR>")
    Call Response.Write(Err.Description & "<BR>")
    Response.End
  End If

  Call tso.WriteLine("hoge")
  If Err.Number <> 0 Then
    Call Response.Write(Err.Number & "<BR>")
    Call Response.Write(Err.Source & "<BR>")
    Call Response.Write(Err.Description & "<BR>")
    Response.End
  End If

  tso.Close()
  
  Set tso = Nothing
  Set fso = Nothing

  Call Response.Write("書き込み成功")

End Sub
参考にしたサイト

ドメイン運用かワークグループ運用かによって手順が若干変わりますが、たとえば
ワークグループ運用であれば、Web サイトの実行アカウント(既定値は IUSR_pcname)と
同じ名前/パスワードのアカウントをファイルサーバー側に用意し、そのアカウント
(あるいは、そのアカウントが所属するグループ)に対して、 NTFS のアクセス許可を
与えておけば、FileSystemObject からは \\serverName\sharedName\folderName として
ファイルサーバー上のフォルダやファイルにアクセスすることができます。
Re[3]: 別サーバーへのフォルダの作成 はてなブックマーク - Re[3]: 別サーバーへのフォルダの作成

注意事項

共有ディレクトリへのアクセスは、WindowsOSの同時接続数の制限を受けます。同時接続数が5ユーザに制限されている場合、同時に6人以上で同じディレクトリに書き込みを行った場合、どれか1つの端末はアクセス拒否のエラーとなります。
同時接続数は、以下の方法で調べることができます。

コントロールパネル→ライセンス