• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:環境変数TEMPを使用するアプリがアクセスエラー)

環境変数TEMPのアクセスエラーについて

このQ&Aのポイント
  • Windows7で動作している.NET Framework2.0のアプリが、環境変数TEMPにアクセスエラーでファイルが書き込めない問題が発生しています。
  • エラーメッセージによると、TEMPディレクトリへのアクセス権がないため、XmlSerializerが動作しているIDに必要なアクセス許可が与えられていません。
  • 問題の原因として考えられるのは、ユーザーアカウントがTEMPディレクトリへのアクセス権限を持っていないため、コンパイルができないことです。

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

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

エラーメッセージを見る限り、 > 環境変数TEMPにアクセスエラーでファイルが書き込めない ではなくて、TEMPフォルダに書き込みできないってエラーでは? > Path.GetTempPath()で取得すると「C:\Users\hogehoge\AppData\Local\Temp\」 のTEMPフォルダを右クリック-[プロパティ]の「セキュリティ」タブで、ID'{0}'というユーザー(?)からの書き込みを許可しているかどうか確認してみては? 見た感じ、ユーザー名:hogehogeのフォルダですから、同じレベルのユーザーにはアクセス許可無い場合はあるかも。

その他の回答 (2)

回答No.3

>パス 'C:\Users\hogehoge\AppData\Local\Temp\null.txt' へのアクセスが拒否されました。 C:\Users\hogehoge\AppData\Local\Temp\null.txtを作成したりオープンしたり出来るのは「ユーザー名hogehogeのユーザーのみ」です。 テストプログラムが「hogehoge」以外のユーザーで実行されている場合は、一切、アクセス出来ません。 XmlSerializerも同様で、XmlSerializerを実行しているユーザーがhogehogeじゃない(ID '{0}'のユーザー)場合は、コンパイルできません。 「環境変数TEMPにアクセスできない」のではなくて「環境変数TEMPで示されるフォルダにアクセスできない」のです。 ぶっちゃけ「C:\TEMP\ってフォルダを作って、そのフォルダを、誰でも読み書き可能にして、環境変数TEMPの値をC\TEMP\にしておく」のが、一番楽です。 大昔の古いアプリの中には、環境変数TEMPで示すフォルダの「パス名の長さ」が「32文字以内」である事を想定しているアプリもあるんで「C:\Users\hogehoge\AppData\Local\Temp\」などと言う長いパス名が設定してあったら、色々と問題が起きます。

  • fenglu
  • ベストアンサー率43% (317/735)
回答No.2

Vistaが出回りだした頃、ユーザーアカウント制御を無効にするとTEMPにアクセスできなくなるという例がいくつかありましたが……。 Win7で同じかどうかは分かりません。

関連するQ&A