
下記のエラーメッセージが表示されてアプリケーションが動作しないのですが、
Windowsって、環境変数TEMPにアクセスエラーでファイルが書き込めない場合ってあるものなのでしょうか?
また、何が原因でこのような状態になるのでしょうか?
エラー:
TEMP ディレクトリへのアクセスが拒否されました。XmlSerializer を実行している ID '{0}' に、TEMP ディレクトリへのアクセスに必要なアクセス許可がありません。CodeDom では、プロセスが使用しているユーザー アカウントを使用してコンパイルしようとするため、ユーザーが TEMP ディレクトリへのアクセス権を持っていない場合、コンパイルはできません。TEMP ディレクトリの場所を見つけるには、Path.GetTempPath() API を使用してください。
とのエラーが発生します。
環境
.NET Framework2.0(C#/WinForm)
Windows7
補足
TEMPの内容
Path.GetTempPath()で取得すると「C:\Users\hogehoge\AppData\Local\Temp\」
となっており、問題は無さそうです。
テストプログラムのエラー(添付にファイル作成)
System.UnauthorizedAccessException: パス 'C:\Users\hogehoge\AppData\Local\Temp\null.txt' へのアクセスが拒否されました。
以上
No.1ベストアンサー
- 回答日時:
エラーメッセージを見る限り、
> 環境変数TEMPにアクセスエラーでファイルが書き込めない
ではなくて、TEMPフォルダに書き込みできないってエラーでは?
> Path.GetTempPath()で取得すると「C:\Users\hogehoge\AppData\Local\Temp\」
のTEMPフォルダを右クリック-[プロパティ]の「セキュリティ」タブで、ID'{0}'というユーザー(?)からの書き込みを許可しているかどうか確認してみては?
見た感じ、ユーザー名:hogehogeのフォルダですから、同じレベルのユーザーにはアクセス許可無い場合はあるかも。

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\」などと言う長いパス名が設定してあったら、色々と問題が起きます。
No.2
- 回答日時:
Vistaが出回りだした頃、ユーザーアカウント制御を無効にするとTEMPにアクセスできなくなるという例がいくつかありましたが……。
Win7で同じかどうかは分かりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cドライブ全てをEveryoneフルコ...
-
環境変数TEMPを使用するアプリ...
-
Googleアカウントが削除されて...
-
Androidアルバムの画像を消去で...
-
ドナルドウズを消す。
-
XCOPYでネットワーク越しにコピ...
-
コマンドプロンプトで出来ること
-
拡張子はなぜ、大文字と小文字...
-
起動ドライブ"C"直下に現れた"O...
-
LAME.EXE をダウンロードしたい...
-
DOSコマンドでファイルをコピー...
-
Windows10 で登録した外字を他...
-
Windowsフォルダ内のファイルと...
-
i Movieで読み込んだはずの動画...
-
リモートデスクトップ接続で残...
-
dirコマンド一文ででフォルダの...
-
net userコマンドでFullname情...
-
フォルダの並び替えの項目を固...
-
ユーザーファイルのAppDa...
-
コマンドプロンプトからファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「グループ名またはユーザー名...
-
HDDにアクセスできない
-
USBブートで内蔵HDDにアクセス...
-
一部のファイルにアクセスでき...
-
環境変数TEMPを使用するアプリ...
-
フォルダーのアクセス許可はど...
-
Cドライブ全てをEveryoneフルコ...
-
アクセス権を伝達するコマンドは?
-
Windows10 クイックアクセスに...
-
フォルダのアクセス権変更,監...
-
フォルダーの中にフォルダーを...
-
このファイルの場所へアクセス...
-
拡張属性とは何でしょうか?【X...
-
Everyoneフルコントロールでア...
-
Administrator本人がアクセス不...
-
ファイル共有で2階層までしか...
-
Windows7のアクセス許可
-
アクセスを取得するにはセキュ...
-
システムイメージを別のHDDに移...
-
HDD内のファイル(動画)にアクセ...
おすすめ情報