2011-12-31 15 views
4

プログラムから一時ファイルを保存する必要がありますが、現在はAppDataパスを使用しています。しかし、私はちょうどWindows上の非管理者(ゲスト)アカウントで自分のプログラムを試しています。 WindowsはAppDataフォルダへのアクセスを拒否しているため、エラーが発生しています。ユーザーごとの一時ファイルを保存する方法は?

最も低いアクセス許可を持つユーザーでも使用できるAppDataではなく、最も理想的なパスは何でしょうか?

Google Webサイトで、必要なパスと要件を列挙した記事を見たことがありますが、見つけられませんでした。あなたは一時ファイルを保存したい場合は

おかげ

+1

'%TEMP%'は適切なものに設定されていませんか? –

+0

'AppData'は現在の(管理者以外の人も)AFAIkが許可されています...あなたは正確にどのようなエラーになりますか? – Yahia

+0

エラーは、コードをAppDataパスにファイルを保存しようとしたときの例外からのものです。管理者アカウントではすべて正常に動作しますが、ゲストではありません。 –

答えて

11

は、一時ディレクトリにサブフォルダを使用します。これがどこであるか調べるにはGetTempPathを使用してください。

すべての現代版のWindowsでは、このフォルダはユーザーごとのフォルダであり、異なるユーザー間で共有されないことに注意してください。すべてのユーザーが共有する場所が必要な場合は、CSIDL_COMMON_APPDATAフォルダが必要です。しかし、あなたが発見したように、標準ユーザーはフォルダに書き込む権利を持っていません。標準的なアプローチは、インストールプログラムが、標準ユーザーに対して十分な書き込みアクセスを可能にする許可ACLを持つサブフォルダを作成することです。

+0

このディレクトリを作成するためにInno Setupを設定できるかどうか、私のプログラムがうまくいくようにします。ありがとう。 –

+0

あなたはQの一時ファイルを言ったのですか?もしそうなら、 'GetTempPath'を使います。ユーザー単位またはマシン単位のものですか?私はまだあなたが本当にやりたいことを少しは確信していますので、私は答えの中で私の賭けをヘッジしています。 –

+0

私はAppDataが一時フォルダであると思っていましたが、混乱のために謝ります。ユーザーごとに私は必要と思うものだと思います。 –

関連する問題