2

管理者がアプリを使いやすくすることに取り組んできました。私が本当にやりたいことの 1 つは、管理者がプログラム内から他のユーザーの設定を変更できるようにすることです。ただし、通常の古いユーザーが自分の設定を変更できるようにしながら、私のアプリケーションは必ずしも専用ではないためです。ユーザーに特定の設定を強制的に使用させたい管理者。

これを行うには、次の 2 つの方法が考えられます。

1)ユーザー設定ファイルのパスを現在の場所 (CLSID_APPDATA、通常はDocuments and Settings\ Username ) から、誰でもアクセスできるパス (CLSID_COMMON_APPDATA、通常はDocuments and Settings\All Users ) に移動します。次に、各ユーザーの設定をユーザー固有のファイル (おそらくユーザーのテキスト SID と同じ名前) に保存します。フォルダーは

C:\Documents and Settings\All Users\My Company\My Programのようになります。 \settings\123-abc-456-def.settings
C:\Documents and Settings\All Users\My Company\My Program\settings\234-bcd-477-xyz.settings
C:\Documents and Settings\All Users\My Company\My Program\settings\946-hdc-743-ddd.settings 利点

:

  • COMMON_APPDATA パスはすべてのユーザーで同じであるため、これにより、管理者は任意のユーザーの設定を表示して直接変更できます。これは私が本当に望んでいる方法です-これは最も簡単です-しかし、大きな欠点があります:
短所:

  • 権限が問題になる可能性があります。通常のユーザーが設定を保存できるようにするには、プログラムの COMMON_APPDATA 設定フォルダーへの書き込みアクセスをユーザーに許可する必要があります。

    もちろん、設定が保存され、設定ファイルがディスク上に作成された場合、ユーザーの設定ファイルへの書き込みアクセスを、設定が対象のユーザーと管理者に制限して、他の制限されたユーザーがアクセスできないようにする必要があります。それらを変更します。

    ただし、ユーザーがプログラム内から独自の設定を書き込む機会を得る前に、知識のある悪意のある限定ユーザーが、ユーザーの知らないうちにその特定のユーザー用の設定ファイルを作成する可能性があります。制限付きユーザーがファイルを作成した場合、それは彼らがファイルを所有していることを意味します...そして、管理者がファイルのアクセス許可を変更しない限り、そのユーザー (設定の対象者) は設定を変更できなくなります。

    ありえない状況かもしれませんが、それでも心配です。
2)設定ファイルのパスをグローバルにアクセス可能なパスに移動し、ユーザーの設定ファイルを直接変更する代わりに、アプリで「上書き」ファイルを作成してアプリの CLSID_COMMON_APPDATA フォルダーに保存し、管理者がユーザーの設定を上書きできるようにします。

私のアプリがそのユーザー (設定が「上書き」された) に対して読み込まれると、このファイルが検出され、CLSID_APPDATA ( Documents and Settings\ Username ) にある通常の設定ファイルの代わりに読み込まれます。

長所:

  • アクセス許可は簡単に処理できます。

    デフォルトでは、Documents and Settings\ Username APPDATA フォルダーの場合、管理者とUsernameのみが内部からファイルにアクセスできます。そのため、それ自体で、ユーザー自身の通常の個人設定を他の制限されたユーザーから保護します。

    「上書き」設定を保護するために、私のアプリは、上書きファイルが書き込まれる COMMON_APPDATA フォルダーへの書き込みアクセスを管理者以外のすべてに拒否するだけで済みます。これらのオーバーライド設定は、管理者のみが変更できます。
短所:

  • この方法は明らかに回り道です。ユーザーが自分の通常の個人設定を変更した場合、管理者はそれらの変更を確認できません。管理者は、ユーザーの通常の設定をオーバーライドしている設定のみを確認できます (代わりにユーザーに強制的に使用させることができます)。

    ある意味これでいいのかもしれませんが… 遠回りというのはちょっと気が引けますね。

皆さんがこれについてどう思うか興味があります。私の最良の選択肢はどれですか?私は個人的には 2 番の方に傾いています。なぜなら、2 番の方が簡単ではありませんが、安全性が高く、管理者が混乱するような回りくどくないからです。

ただし、提案も受け付けています。より効果的だと思われる優れたオプションはありますか?

2009 年 7 月 6 日編集:オプション #2 の場合、管理者はすべてのユーザーの設定を単一の上書きファイルで上書きできるだけでなく、個々のユーザーの設定をそのユーザー固有の上書きファイルで上書きすることもできることに注意してください (オプション#1、そのファイル名は、設定が上書きされているユーザーのSIDの名前である可能性があります)。元の投稿でそれが完全に明確であったかどうかはわかりません。

4

2 に答える 2

1

各コンピューターに複数のユーザー アカウントがない限り (つまり、コンピューターが複数のユーザーによって使用されている場合)、オプション 2 が適切な選択です。

各コンピューターに複数のユーザー アカウントがある場合でも、オプション 2 の方が適していると思います。最悪の場合、管理者は 1 つではなく、同じコンピューター上の少数のアカウントの設定を変更する必要があります。

施設が任意の人による任意のコンピューターのランダムな使用を許可している場合は、オプション 1 の方が適しています。

もちろん、いつでもアプリケーション設定をサーバー上のユーザー フォルダーに配置できます。これは、管理者にとって非常に便利です。

于 2009-07-05T20:19:08.310 に答える
0

管理者が、自分の設定ファイルが保存されているユーザーのディレクトリに対する権限を既に持っている場合、それで問題は解決しませんか? いずれにせよ、オプション 2 が最適であるように思えます。次に、たとえばユーザーのグループをオーバーライドできる単一のファイルを作成し、各ユーザーにも独自の設定を含めることができます。アプリケーションが設定をオーバーライドするタイミングとオーバーライドしないタイミングを判断できるほどスマートである限り、オプション 2 はそれほど問題にはなりません。

于 2009-07-05T20:50:34.283 に答える