こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ファイル配布サーバーを作りたい

はじめまして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の設定やユーザーアカウントについても
詳しくないので、その辺りも含めてご説明していただけないでしょうか?
よろしくお願いいたします。

投稿日時 - 2007-07-11 00:04:37

QNo.3156994

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>おしえていただいたコードを試してみたのですが
>「パスが見つかりません」というエラーが表示されてしまいます。

確認ですが、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

後は、「ファイルサーバ側の共有アクセス権限」の問題だったりもしますので、
そのあたりをご確認頂きたく存じます。

ご確認宜しくお願いします。

投稿日時 - 2007-07-19 10:29:11

ANo.1

原因は、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で実行してもお悩みでいらっしゃった実行時エラーが
 同じように再現したため、情報提供致しました。

お役に立てば幸いです。

参考URL:http://www.atmarkit.co.jp/fwin2k/operation/wsh08/wsh08_02.html

投稿日時 - 2007-07-15 23:04:55

補足

おしえていただいたコードを試してみたのですが
「パスが見つかりません」というエラーが表示されてしまいます。
こちらのサイトを参考にして↓
http://support.microsoft.com/kb/197964/ja

コピー先のサイトにも「IUSR_[ファイルserverのコンピュータ名]」のユーザーを作ったりのですが、うまくいきません。
上記のコードを使う場合のASP上のユーザー割り当てと
IISの匿名アクセスのユーザーは何を選択すればいいのでしょうか?
アドバイスよろしくお願いいたします。

投稿日時 - 2007-07-19 00:09:37

あなたにオススメの質問