ファイル内容書き換えでエラーが発生

このQ&Aのポイント
  • Win2000IISで正常に動作しているASPがXPでエラーとなる理由を解説します。
  • エラーメッセージ「Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。」が表示される場合の対処法について説明します。
  • ファイル書き込みに必要なパーミッション設定の確認方法について解説します。
回答を見る
  • ベストアンサー

ファイル内容書き換えでエラーが発生

webサーバのosがWin2000IISで正常に動作しているASPがあるのですが、このほど、webサーバをXPで構築したところ、エラーとなります。Win2000とXPの違いなのか、わからないのですが、私がWin2000のころに設定したことをし忘れているためXPでエラーになっているのかもわかりません。下記記述でエラーとなります。(当然、c:\wwwcnt\cnt_mem.txtは存在します) Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。 po001.asp, line 7 よろしくお願いいたします。 <% set fso = server.createobject("scripting.filesystemobject") set tso = fso.opentextfile("c:\wwwcnt\cnt_mem.txt",1,false) c_mem = tso.readline c_mem = c_mem + 1 tso.close set tso = fso.opentextfile("c:\wwwcnt\cnt_mem.txt",2,true) tso.writeline c_mem tso.close %>

質問者が選んだベストアンサー

  • ベストアンサー
  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.1

IISの認証方式にもよるのでしょうが、c:\wwwcntフォルダのアクセス権が不足しているということはないでしょうか。 IISで匿名アクセスのみ許可しているのであれば、<IUSR_コンピュータ名>や<Everyone>に変更権限が必要ではないでしょうか。

taka_2008A
質問者

お礼

ありがとうございます。 WWWCNTのアクセス権が原因でした。

関連するQ&A

  • FileSystemObject Win2008Server

    FileSystemObject Win2008Server 今までのWin2003ServerをWindows2008サーバーに更新しました。 Accessデータベース関係は今まで通り処理出来るのですが FileSystemObjectを使ったTextファイルからの読み込みや加工が 出来なくなりました。 VBScriptで社内DBを稼働させています。 サーバーや設定の事はあまり詳しくないのですが 何をチェックすればいいのか、ご指導お願いします。 (1)これはエラーになりません Set connectObj = Server.CreateObject("ADODB.Connection") ConnectObj.Open "xxx" 以下Accessの読み書き (2)この実行でエラーになります。 Set fso = Server.CreateObject("Scripting.FileSystemObject") set tso = fso.OpenTextFile(fp,1) この実行でエラーになります。 以下テキストファイルの処理 お手数ですが宜しくお願いします。

  • ASP.NETでのアクセスカウンター導入方法

    どうぞよろしくお願いします。 現在、ASP.NETでホームページを作成しておりますが、 旧来、aspで使用していたアクセスカウンターが動きません。set代入ステートメントはサポートされてませんというエラーが出ます。 以下ソースなのですが、簡単な修正で使うことはできますか? また、aspのフリーアクセスカウンターはネット上にたくさんありますが、asp.NETのものがあるサイトがありましたら教えてください。 よろしくお願いします。 <% Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") filename = Server.MapPath("data/count.dat") 'カウンタファイルを読み取り専用で開きます。 Set ObjTS = ObjFSO.OpenTextFile(filename,1,True) 'カウンタ値を取得します。 If ObjTS.AtEndOfStream Then cnt = 0 Else cnt = ObjTS.ReadLine End If 'ファイルを閉じます。 ObjTS.Close 'カウンタ値を加算します。 cnt = cnt + 1 'カウンタファイルを上書きモードで開きます。 Set ObjTS = ObjFSO.OpenTextFile(filename,2,True) 'ファイルにカウンタ値を書き込みます。 ObjTS.WriteLine cnt 'ファイルを閉じます。 ObjTS.Close 'カウンタ値を表示します。 Response.Write "現在までのアクセス数:" & cnt 'オブジェクトを解放します。 Set ObjTS = Nothing Set ObjFSO = Nothing %>

  • ファイルの変換で文字化けを回避したい

    ファイル中の文字列を一部書き換える処理をしています。regEx.replaceを使って書き換えたところ、日本語が下記のように文字化けしてしまいます。 これを回避するためにどうしたら良いでしょうか? ○変換前:test1.txt <description>東京都</description> ○変換結果:test2.txt(文字化け) <description>譚ア莠ャ驛ス</description> ○スクリプト Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("c:\test1.txt") Set outFile = fso.CreateTextFile("c:\test2.txt") Set regEx = New RegExp regEx.pattern = "テスト" repStr = "てすと" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • ファイル圧縮時のエラー発生

    office2016 あるフォルダから必要なファイルがc:\work配下へコピーされていて、 このフォルダ配下の圧縮ファイルをc:\logフォルダへファイル名log.zipとして登録するマクロを実行すると、ファイルが見つからないか、読み取りのアクセス許可がありません と表示されることがあります。 同じファイルで実行した時、エラー発生しないときもあります。 実施した例は、下記で、それぞれの容量は1KBです。 c:\workに test1.txt test2.txt test3.txt があって、 マクロ実行すると c:\workの中は空になり、 c:\log配下にlog.zipファイルが作成されるマクロとしています。 実行マクロは下記です。 Sub zip() fpath = "C:\work\" '空のZIPファイル作成 Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.CreateTextFile("c:\log\" & "log.zip") msg = "PK" & Chr(5) & Chr(6) & String(18, 0) ts.Write (msg) ts.Close 'フォルダオブジェクト取得 Set sh = CreateObject("Shell.Application") Set fol = sh.Namespace("c:\log\" & "log.zip") 'サンプル:フォルダ内のファイルを圧縮 FName = Dir(fpath & "*.*") Do While (FName <> "") fol.MoveHere fpath & FName 'ZIPへファイル追加 FName = Dir() Loop End Sub デバッグモードで実行する分には、 ファイルが見つからないか、読み取りのアクセス許可がありません というエラーは発生しません。 何が原因なのでしょう?また、対策を教えていただきたく。 また、WEBから参照したマクロなのですが、 msg = "PK" & Chr(5) & Chr(6) & String(18, 0) ts.Write (msg) ts.Close の部分の意味も教えていただけたらと思います。

  • テキストファイルに一行文字を追加したい

    バッチ処理でテキストファイルの最後に文字列を追加する作業をやりたいのです。 普通の文字列ですと、1)のようにして上手くいきます。 ところが「"」の入った文字列を一行加えようと2)のようにすると、エラーになってしまいます。どうしたら前に進めるでしょうか? --------- 1)上手くいくケース ----------- Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.GetFile("C:\test\hoge.txt") Set f = tmpFile.OpenAsTextStream(8, -2) f.Write("一行追加しました") f.close Set f = Nothing Set tmpFile = Nothing Set fso = Nothing --------- 2)上手くいかないケース ----------- Set fso = CreateObject("Scripting.FileSystemObject") Set tmpFile = fso.GetFile("C:\test\hoge.txt") Set f = tmpFile.OpenAsTextStream(8, -2) f.Write("一行"追加"しました") f.close Set f = Nothing Set tmpFile = Nothing Set fso = Nothing

  • テキストファイル中の文字列を書き換えるスクリプトを書きたい

    テキストファイルの文字列を書き換えるスクリプトを考えています。 今、次のところまで出来るようになりました。本当は「こんにちは」の文字列を全て「HELLO」に置換したいのです。現在は一行の中で最初の「こんにちは」は置換されますが、2番目以降が置換されません。同じ行中の2番目以降も置換するには、どうしたら良いでしょうか? <置換前ファイル:sample.txtの中身> こんにちはこんにちはこんにちはこんにちは こんにちは こんにちは <置換前ファイル:sample.txtの中身> HELLOこんにちはこんにちはこんにちは HELLO HELLO <置換スクリプト> Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Set inFile = fso.OpenTextFile("C:\static\sample.txt") Set outFile = fso.CreateTextFile("C:\static\sample1.txt") regEx.Pattern = "こんにちは" repStr = "HELLO" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • vbscript ファイルのマージ

    VB初心者です。 C:\test配下の複数のファイルをマージする便利ツールを只今作成中なのですが、 下記プログラムを実行すると「If aryStrings(3) = "yes" Then」の行に対し、 「Subscript out of range」というエラーメッセージが表示されます。 マージの対象としているファイルの中身は次のようなイメージです。 100,101,102,yes,104,105,106,107,108,109,110,111 101,101,102,no,104,105,106,107,108,109,110,111 102,101,102,yes,104,105,106,107,108,109,110,111 103,101,102,no,104,105,106,107,108,109,110,111 104,101,102,yes,104,105,106,107,108,109,110,111 出力データ(output.txt)を見ると正常に処理されているようなのですが なぜこのようなメッセージが表示されるのかご教授いただきたいです。 お手数ですが宜しくお願い致します。 プログラム -------------------------------------------------------------------------------------------------------------------------- Dim FileName Dim fso,baseFolder Dim frFile,toFile Dim mFile Dim strLine1,strLine Dim aryStrings Dim msg FileName = InputBox("ファイル名を入力してください","ファイル名入力","output") Set fso = CreateObject("Scripting.FileSystemObject") Set baseFolder = fso.GetFolder("C:\test") Set toFile = fso.OpenTextFile("C:\test\" & FileName & ".txt" ,2 , True) For Each mFile In baseFolder.Files Set frFile = fso.OpenTextFile("C:\test\" & mFile.Name , 1) Do While frFile.AtEndOfStream <> True strLine1 = frFile.ReadLine() aryStrings = Split(strLine1, ",") If aryStrings(3) = "yes" Then strLine = aryStrings(0) +" "+ aryStrings(1) +" "+ aryStrings(9) +" "+ aryStrings(10) +" "+ aryStrings(11) toFile.Write strLine & vbCrLf Else End If Loop frFile.Close Set frFile = nothing Next toFile.Close msg = "処理終了" MsgBox msg --------------------------------------------------------------------------------------------------------------------------

  • vbscript ファイル操作

    二つのテキストファイルを行レベルで結合したファイルを 作成しようとしています。 ファイルの最後を越えた入力を行おうとしました。 とエラーが吐き出され、結合したファイルがうまく作成されません。 -vbscritptファイル- dim f, f_a, f_b, f_bu, f_mk, wrtxt set f = createobject("scripting.filesystemobject") set f_a = f.opentextfile("c:\temp\a.txt",1) set f_b = f.opentextfile("c:\temp\b.txt",1) set f_mk = f.createtextfile("c:\temp\result.txt") f_mk.close set wrtxt = f.opentextfile("c:\temp\result.txt",2) do while f_b.atendofstream <> true if not f_a.readline & f_b.readline = "" then wrtxt.writeline(f_a.readline & " " & f_b.readline) else exit do end if loop f_a.close f_b.close   -a.txt- 2008/07/01 9:30 2008/07/02 9:59 2008/07/03 9:35 2008/07/04 9:52 2008/07/08 9:45 2008/07/09 9:47 2008/07/10 9:15 2008/07/11 9:44 2008/07/14 9:44 2008/07/15 9:43 2008/07/16 13:19 2008/07/17 9:45 2008/07/18 9:31 2008/07/22 9:39 2008/07/23 9:28 2008/07/24 9:41 2008/07/25 9:58 2008/07/28 9:29 2008/07/29 9:49 2008/07/30 9:50 2008/07/31 9:21 -b.txt- 2008/07/01 18:25 2008/07/02 19:15 2008/07/03 18:45 2008/07/04 19:16 2008/07/08 18:36 2008/07/09 19:14 2008/07/10 18:46 2008/07/11 21:58 2008/07/14 22:36 2008/07/15 19:42 2008/07/16 18:00 2008/07/17 19:19 2008/07/18 18:16 2008/07/22 19:56 2008/07/23 18:42 2008/07/24 18:38 2008/07/25 21:55 2008/07/28 21:31 2008/07/29 22:23 2008/07/30 20:13 2008/07/31 20:00 期待値 2008/7/1 9:30 2008/7/1 18:25 2008/7/2 9:59 2008/7/2 19:15 2008/7/3 9:35 2008/7/3 18:45 2008/7/4 9:52 2008/7/4 19:16 2008/7/8 9:45 2008/7/8 18:36 2008/7/9 9:47 2008/7/9 19:14 2008/7/10 9:15 2008/7/10 18:46 2008/7/11 9:44 2008/7/11 21:58 2008/7/14 9:44 2008/7/14 22:36 2008/7/15 9:43 2008/7/15 19:42 2008/7/16 13:19 2008/7/16 18:00 2008/7/17 9:45 2008/7/17 19:19 2008/7/18 9:31 2008/7/18 18:16 2008/7/22 9:39 2008/7/22 19:56 2008/7/23 9:28 2008/7/23 18:42 2008/7/24 9:41 2008/7/24 18:38 2008/7/25 9:58 2008/7/25 21:55 2008/7/28 9:29 2008/7/28 21:31 2008/7/29 9:49 2008/7/29 22:23 2008/7/30 9:50 2008/7/30 20:13 2008/7/31 9:21 2008/7/31 20:00 vbscriptを使い出したのは最近のため、どこが悪いのかわかりません。 ご指導よろしくお願い致します。

  • フォームの値をHTMLファイルに出力したい

    「1.htm」で入力された値を 「2.asp」でCドライブにHTMLファイルとして出力したいと考えています。 しかし、うまく出力されません。 どなたかご教授お願いします。 ***1.htm*** <form method="POST" action="2.asp"> <input name="text1" type="text"> </form> ***2.asp*** <% Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.OpenTextFile("c:\test.htm",8,True) strWriteText = FormatDateTime( Now , vbGeneralDate ) & _ Request.Form("text1") & _ ↑ここが表示されない。タグの表示方法もわかりません。 %>

  • VBAでJavaのように関数の引数に関数を渡す方法

    やりたいことは、テキストファイルを読み込んで「一行ずつ何か処理」をさせたいです。 この、「一行ずつ何か処理」の部分を引数に渡し、関数の中身で「ファイルを1行ずつ読み込む」部分を実装する方法はないでしょうか。 <イメージ> Function ReadFile(path As String, eachFunc As Fcuntion)  Set fso = CreateObject("Scripting.FileSystemObject")  Set tso = fso.OpenTextFile(path)  Do Until tso.AtEndOfStream   Call eachFunc(tso.ReadLine)  Loop End Function 予め一行ずつ読み込む処理を作っておきモジュールとして使いたいです。 よろしくお願いします。