- 締切済み
ファイル配布サーバーを作りたい
はじめましてWindows2003server、IIS6、ASPで、 ファイル配布サーバーを作りたいのですが、うまく行かずに困っています。 試してみたのは以下の二つの方法です。 (1)WSHを用いる方法 IISでWEBサーバーを立てて、server内のファイルをコピー http://infoboard.winofsql.jp/list_lightbox.cgi?mid=smalltech&id=041027113413 のサンプルを参考にして、net useコマンドを利用して接続しようと思ったのですが、 strCommand = "net use z: \\PC名\copy パスワード /USER:ワークグループ\lightbox の次の Call WshShell.Run( strCommand,, true ) のところで 「Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません」というエラーが発生します。 Windows2000+IIS5.0で同じソースを実行したところ、 正常に稼動したのですが、それともIIS6.0ではブラウザからのWSHの実行は できない仕様になっているのでしょうか? (2)コピーコマンドを用いる方法 過去logの [5060] ファイルの存在について 2005/06/17 11:10:18 を参考に ネットワークドライブを割り当てて、ファイルシステムオブジェクトのコピーファイルコマンドを 使う方法でやろうとしたのですが、コンピュータ名でもIPアドレス指定でも うまくいきません。マイコンピュータ上でネットワークドライブとして表示されていても 初回接続時にID、パスワードを入力を要求される場合はダメなんでしょうか? あまりIISの設定やユーザーアカウントについても 詳しくないので、その辺りも含めてご説明していただけないでしょうか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kero_mio
- ベストアンサー率90% (94/104)
>おしえていただいたコードを試してみたのですが >「パスが見つかりません」というエラーが表示されてしまいます。 確認ですが、ASPを動かしているWebサーバと、コピー先のファイルサーバ は、同一ドメイン内もしくは、同一ワークグループでしょうか? ネットワーク構成によっても、私が示したサンプルの 「computername(またドメイン?)\user」の部分の指定の仕方が変わります。 (そこは、言わなくても変更されていらっしゃいますよね?) また、私が示したサンプルの「MapNetworkDrive」で指定している PATH("\\computername\public")は、普通にASPを動かしているWebサーバから、 コピー先ファイルサーバにアクセスできているのでしょうか? ASPを動かしているWebサーバ上の「エクスプローラー」や「ファイル名を指定して実行」で、 ファイルサーバのPATH("\\computername\public")につながるか確認してみて下さい。 もし接続ができなければ、お持ちのネットワーク情報に合わせて、 「\\computername\public」、「computername(またドメイン?)\user」の部分を 適宜変更してみて下さい。 >コピー先のサイトにも「IUSR_[ファイルserverのコンピュータ名]」のユーザーを作ったりのですが、うまくいきません。 >上記のコードを使う場合のASP上のユーザー割り当てと >IISの匿名アクセスのユーザーは何を選択すればいいのでしょうか? >アドバイスよろしくお願いいたします。 それは、関係ありません。 ファイルのコピー権限がないという意味で試されたのであれば、理解できますが、 接続だけであれば、私が提示したサンプルのIDとパスワード指定方法で 接続できると思います。(悪まで、ファイルサーバ側の権限設定をしていればの話ですが...) 「computername(またドメイン?)\user」の部分は、上述でも記載した通り、 ネットワークの構成によって、(というより、Webサーバから見た場合というべき)指定方法が 変わりますが、その辺りをまずは確認することが先決ではないでしょうか? ■ユーザ名指定方法例: CopyUser → Webサーバとファイルサーバが同一ドメイン・ワークグループにある場合は、これでOKの場合がある WORKGROUP\CopyUser DOMAIN_NAME\CopyUser PCNAME(ファイルサーバのユーザ)\CopyUser 後は、「ファイルサーバ側の共有アクセス権限」の問題だったりもしますので、 そのあたりをご確認頂きたく存じます。 ご確認宜しくお願いします。
- kero_mio
- ベストアンサー率90% (94/104)
原因は、IUSR_[コンピュータ名] というユーザに net use コマンドや xcopy を行う権限がないのが原因です。 XPや2003 Server の場合、Administrator 等、権限があるユーザが、匿名ユーザで実行すれば、 実行できますが、セキュリティ的な問題があるので、お勧めはできません。 2000の場合は、IUSR_[コンピュータ名]がAdministratorsグループに 所属させたり、net.exeにIUSR_[コンピュータ名]に実行権限を 与えたことにより、実行できたんですが、いずれにしてもセキュリティ上、問題はあります。 恐らく、サンプルとして参考にされたサイトに掲載されているコードは、 2000で動いていたんじゃないかと思われます。 (XP, 2003では、上記制約のため動きません) そのため、ちょっと発想をかえて、WScript.NetworkのMapNetworkDriveを 使ってみては、如何でしょうか? ※ServerのExplore上では、共有ドライブが表示されてないんですが、 内部では、ネットワークドライブとして認識はしているようなので。 <HTML> <HEAD> <META http-equiv="Content-type" content="text/html; charset=Shift_JIS" </HEAD> <BODY> <% Dim oNet Set oNet = Server.CreateObject("WScript.Network") oNet.MapNetworkDrive "Z:", "\\computername\public", True, "computername(またドメイン?)\user", "password" Dim oDrivers Set oDrivers = oNet.EnumNetworkDrives For i = 0 to oDrivers.Count - 1 Step 2 Response.Write "ドライブ名:" & oDrivers.Item(i) Response.Write "<br>" Response.Write " 割り当て先:" & oDrivers.Item (i + 1) Next oNet.RemoveNetworkDrive "Z:", True Set oNet = Nothing %> </BODY> </HTML> ※当方、XPで確認しました。 ※XPで実行してもお悩みでいらっしゃった実行時エラーが 同じように再現したため、情報提供致しました。 お役に立てば幸いです。
補足
おしえていただいたコードを試してみたのですが 「パスが見つかりません」というエラーが表示されてしまいます。 こちらのサイトを参考にして↓ http://support.microsoft.com/kb/197964/ja コピー先のサイトにも「IUSR_[ファイルserverのコンピュータ名]」のユーザーを作ったりのですが、うまくいきません。 上記のコードを使う場合のASP上のユーザー割り当てと IISの匿名アクセスのユーザーは何を選択すればいいのでしょうか? アドバイスよろしくお願いいたします。