0

私のアプリケーションは基本的にXMLファイルを作成し、そのC:\ProgramData\MyAppFolder中に構成設定をダンプします。

標準ユーザーでも、これらの構成ファイルに設定を追加または削除する権限を付与する必要があります。現在、標準ユーザーには読み取り/実行権限のみがあり、「フルコントロール」はありません。

その特定のフォルダへのアクセス許可を変更する方法で他の質問に回答するのを見てきましたが、システム管理者によってリセットされる可能性があるため、デフォルトのアクセス許可レベルを変更したくありません。

すべてのユーザーにそのアクセスを許可できない場合C:\ProgramData、アプリケーションのニーズに最適なフォルダーはありますか?

編集:

私の最初の質問は誤解を招くかもしれません。ユーザーに権限を付与したくはありませんが、すべてのユーザーが実行するときにアプリケーションがXMLファイルを変更できるようにします。

決断:

ProgramDataでフォルダを作成するときに権限を変更することが唯一のオプションだと思います。

それが不可能な場合は、CommonDocumentsが最適です。

ありがとうイブ。

4

3 に答える 3

2

Environment.SpecialFolder列挙型のフォルダーを使用します。

例:

var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
于 2012-12-14T17:39:20.770 に答える
1

アプリケーションのインストーラーがあるとすると、インストーラーは、アプリケーションが読み取り/書き込みアクセスできる共通のappdataディレクトリー(別名C:\ ProgramData)にサブフォルダーを作成できます。インストールテクノロジの選択に応じて、そのフォルダにアクセス許可を設定することもできますが、それはやり過ぎかもしれません。私はWiXで基本的にあなたがしなければならないのはマシンごとのインストールであり、サブフォルダが作成されることを確認することです。

于 2012-12-14T17:55:38.773 に答える
1

ユーザーがこのディレクトリに任意のデータを書き込むことを許可しないでください。これは、通常のユーザーがC:\Users\AllUsersディレクトリを変更できるのと同じです。ユーザーがこのディレクトリを変更する必要がある場合は、重大な設計上の欠陥があるため、このアプローチを再検討する必要があります。ほとんどのプログラミング言語でのゲッター/セッターの動作と同様に、ユーザーには、直接アクセスを許可せずに、これらの値をバックグラウンドで操作するためのGUIインターフェイスがユーザーに提供されます。言うまでもなく、通常のユーザーが他のユーザーのシステムを破壊する可能性がある場合、これは非常に大きなセキュリティホールです。

アップデート

ユーザーにファイルへの直接アクセスを許可したくありません。私の質問は誤解を招く可能性があります。すべてのユーザーが実行している場合でも、プログラムがファイルを完全に制御できるようにしたい。私は実際にこれを行っています:「ユーザーは、直接アクセスすることなく、これらの値を舞台裏で操作するためのGUIインターフェースを使用できます」

ここに投稿するには情報が多すぎるこの記事では、権限を漏らさないように安全を維持する方法について詳しく説明します。最初に行うことは、アプリケーションユーザーが独自のグループに属し、ログインできないこと、または特別な権限を持っていないことを確認することです。これよりもできることは、このグループを書き込み権限でディレクトリに追加することです。これにより、このアプリケーションでこれらのタスクを実行できるようになります。それが不可能な場合は、上記の記事で詳しく説明されているように、システムのセキュリティを破らないようにUAC内で作業する必要があります。

2回目の更新

リンクをありがとう。権限をいじるのではなく、仕事をすることができる他のフォルダに関する提案はありますか?

確かに、アプリケーションが書き込まれるディレクトリに書き込むことができます。つまりC:\Program Files\Some Awesome Program、これによりすべてが1つの場所に保持され、ユーザー/グループとそれをインストールした人が許可したものについてのみ心配する必要があります。また、もちろん管理者でない限り、他の人がそれをいじるのを防ぎます。

于 2012-12-14T17:39:39.413 に答える