2016-05-27 26 views
0

質問は本当に明確です。Windows:どのフォルダに常に書き込み権限がありますか?

どの(Windows-)フォルダには常に書き込み権限がありますか?

私は、どのアプリケーションでも常にどのシステムでも書き込み権限を持つフォルダを見つける必要があります。

現在、私は%AppData%を使用していましたが、パスには(特に公共のコンピュータで)書き込み権限がないという通知が一部のユーザーから届きました。

答えて

1

書き込み可能なフォルダは、OSだけでなく、そのコンピュータにインストールされているセキュリティ/ガーディングシステムによって異なります。一部のウイルス対策ソフトウェアまたはシステム管理者は、コンピュータに非常に制限されたデータアクセスポリシーをインストール/作成できます。恥骨のコンピュータの場合は、最も一般的な%TEMP%フォルダのみが書き込み可能な一般的なフォルダです。 tempへの書き込みアクセス権がなければ、多くのアプリケーションはまったく動作しません。もちろん、一時フォルダの下に永久にデータが保存されることは期待できません。

2番目の希望する場所は、ローミングデータを考慮する必要がない場合、通常はAppData/Localのユーザーのローカルデータフォルダになります。ここでも、そのコンピュータのアクセス制限の種類によって異なります。

Windowsのappdataフォルダについては、このリンクを参照してください。

https://msdn.microsoft.com/en-us/windows/uwp/app-settings/store-and-retrieve-app-data

+0

データを永続的に保存する必要があります。私は、パブリックコンピュータを永久にデータを保存することができないように制限することができるという問題を認識していますが、書き込み許可を提供する可能性の高い場所を探しています。 %AppData%はAppData/Roamingに解決されるので、あなたのアドバイスはAppData/Localに切り替えるでしょうか? 私は、Windows-APIを使う方法はないと思います。外部のApps/Libs(時にはユーザー)がファイルにアクセスできる必要があります。 – progmem

+0

Windows APIを使うべきではありません。これは、Windowsがそのフォルダの使用方法をどのように定義するかを示すリファレンスです。 %appdata%はAppData/Roamingに解決され、%localappdata%はAppData/Localに解決されます。許可管理の面では、私は違いはないと思います。それは本当にデータをローカルに保存するかどうかによって異なります。アプリケーションを正常に実行するためにデータを保存する必要がある場合は、場所のリストを試してみてください。最初に%AppData%、次に%LocalAppData%、最後に%TEMP%と指定すると、警告データがシステムによってパージされる可能性があります。 –

+0

良い点。私はすでに同様の解決策を考えていました。 – progmem

0

Windowsは、具体的なアプリケーションで使用するためにローミングApplication DataフォルダとローカルApplication Dataフォルダを提供します。システム管理者がこれらをロックダウンしている場合は、おそらくユーザーがサードパーティのアプリケーションを実行していないことを意味します。 (システム管理者が無能であるという唯一の他の唯一の可能性があります)。

その他の可能性として、Documentsフォルダがあります。基本的には、ユーザーごとのフォルダは通常どおり書き込み可能であると想定されます。もちろん、システム管理者のいずれも書き込み不可能にすることができます。しかし、それはあなたの問題ではありません。

環境変数を読み取るのではなく、フォルダパスを決定するには、SHGetKnownFolderPath関数または同等の関数を使用する必要があります。あなたはあなたの言語を指定していませんが、これを行う方法について既に多くの質問があります。

また、アプリケーションデータフォルダに直接ファイルを書き込まないでください。代わりに、サブフォルダを作成してそこにファイルを配置します。

関連する問題