2017-07-28 4 views
0

VBSに古典的なaspページがあり、次のコードでWebサーバー上にファイルを作成しようとしています。古典的なaspはWebサーバー上にテキストファイルを作成します:エラー800a0034 Bad_file_name_or_number

Set fso = CreateObject("Scripting.FileSystemObject") 
Set file1 = fso.CreateTextFile("\\localhost\inetpub\wwwroot\cs\batch\123456dirs.bat", true) 

これは、次のエラーが返されます。

|666|800a0034|Bad_file_name_or_number

ライン666は、CreateTextFileラインです。

Microsoftの文書によると、これは無効なファイル名でファイルを作成しようとしていることを意味します。次に、ファイル名と私のルールが完全に有効であるように見えます。

この問題をさらに解決する方法についてのご意見やご提案はありますか?

+0

:Webサイトのルートは、CSフォルダにある場合、あなたのような何かを行うことができます。あなたが与えたパスは、サーバ上のWindowsデスクトップにログオンしていて、そのパスにCDを書き込もうとした場合のように解決する必要があります。あなたが作成していない限り –

答えて

1

最初の事ユーザーはそのフォルダにアクセスできます。 Windows認証を使用していない場合は、IUSRアカウントにフォルダへの書き込みアクセス権があることを確認してください。

秒、inetpubが共有フォルダとして設定されていない限り、構文は機能しません。 createtextfile機能は、Webサーバー上ではなく、ローカルサーバー自体のコンテキストで実行

Set file1 = fso.CreateTextFile(Server.MapPath("/cs/batch/123456dirs.bat"), true) 
0

createtextfile()関数は、Webサーバー上で実行されますが、ローカルサーバー自体のコンテキストで実行されます。簡単に言えば、サーバー上のWindowsデスクトップにログオンしていて、そのパスにCDを挿入しようとした場合と同じように、パスを指定する必要があります。

\ localhost ...という形式は、UNCパスです。 UNCのパスとウィンドウについては、this questionを参照してください。 \ localhost用にマップされたUNCパスがあることが分かっている場合を除き、それはおそらく問題です。あなたは、\ localhostが使用する合理的なパスと仮定しているかもしれませんが、確かにそれが利用可能であることが分かっていない限り、これは無効な選択です。

最後に、\ localhost用の共有を設定すると、Webサーバーが操作するユーザーコンテキストの周りに興味深い領域に入ります。共有を設定する必要があることがわかりますIISの実行時IDとして構成されているIISユーザー。そのため、そのユーザーに共有を与えるために必要な設定を作成して作成する必要があります。あなたのことを確認するためにチェックする

それが私だったら、その後もあなたが実行するユーザーコンテキストとセキュリティの設定を高く評価する必要があるが、私は、標準的なWindowsのパスの使用に切り替えるだろうが、など

関連する問題