アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のエラーメッセージが表示されてアプリケーションが動作しないのですが、
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' へのアクセスが拒否されました。

以上

A 回答 (3件)

エラーメッセージを見る限り、



> 環境変数TEMPにアクセスエラーでファイルが書き込めない

ではなくて、TEMPフォルダに書き込みできないってエラーでは?

> Path.GetTempPath()で取得すると「C:\Users\hogehoge\AppData\Local\Temp\」

のTEMPフォルダを右クリック-[プロパティ]の「セキュリティ」タブで、ID'{0}'というユーザー(?)からの書き込みを許可しているかどうか確認してみては?
見た感じ、ユーザー名:hogehogeのフォルダですから、同じレベルのユーザーにはアクセス許可無い場合はあるかも。
「環境変数TEMPを使用するアプリがアクセ」の回答画像1
    • good
    • 0

>パス '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\」などと言う長いパス名が設定してあったら、色々と問題が起きます。
    • good
    • 0

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


Win7で同じかどうかは分かりません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!