ユーザーが変更できないプログラムオプションを管理者が設定する方法
質問
アプリケーションは、起動時にオプションを読み取り、読み取り専用モードで起動するかどうかを確認する必要があります。このオプションは、ユーザーによる変更を許可しないでください。
通常、システムレジストリのHKLM \ Softwareセクションに設定された値を使用してこれを実行します。管理者が値を設定し、ユーザーは値を変更できません(HKLMのエントリを変更する権限はありません)。
問題は、ターミナルサーバー(またはCitrix)マシンではすべてのユーザーに影響することです。ユーザーごとにこれを行う方法を見つけたいです。他の人はこれをどのように扱いますか?このようなユーザーごとの設定について、ユーザーが変更できないセクションがシステムレジストリにありますか?
提案やコメントをありがとう!
解決
これは基本的に、 HKEY_CURRENT_USER \ Software \ Policies
キーの目的です。つまり、レジストリのユーザー固有部分内のキーで、デフォルトではユーザー自身に対して読み取り専用です。
慣例により、キー階層は、 HKEY_CURRENT_USER \ Software
の下にすでにある階層を補完する必要があります。通常のユーザー設定が HKEY_CURRENT_USER \ Software \ MyCompany \ MyProgram
に保存されている場合、保護されたユーザー設定(またはMS lingoの「ポリシー」)は HKEY_CURRENT_USER \ Software \ Policies \に保存する必要があります。 MyCompany \ MyProgram
グループポリシーオブジェクトを介してのみこのキーの下に値を設定することをお勧めします。直接のレジストリアクセスでは決してしないことに注意してください。
他のヒント
ユーザーが変更できないユーザーごとの設定領域の概念は、実際には意味がありません。ユーザー設定の場合、「あなた」は(ユーザー)はそれらを変更できることを期待しています。
2つの選択肢が考えられます:
- HKLMで設定を書き込みますが、 ユーザーごとに異なる設定と、設定されていないユーザーのグローバルフォールバック設定
- それらをHKCUで記述しますが、 防止するレジストリセキュリティAPI 彼らはそれに書き込みます。おそらく必要になります の権限よりも大きい権限 許可を取り消さないようにする 変更します。本当に好きじゃない オプションですが、それをフォローしたい場合 おそらくあなたは RegGetKeySecurity および RegSetKeySecurity API。 これ 記事は興味深いかもしれません まあ。
個人的には、最初のオプションが最も簡単で、ユーザーのレジストリツリーでの危険な作業が少ないと思います。役に立てば幸いです!
2つの設定はどうですか?
1)HKLMでフラグを設定し、読み取り専用がこのマシンのデフォルトの動作であることを指定します。
2)フルアクセスが必要なユーザーについては、HKCUでフルアクセスを有効にするトークンを設定します。
トークンは、ソルトとユーザー名の暗号化ハッシュである可能性があるため、コピーして別のユーザーに許可を与えることはできません。
なぜ独自のデータベースにオプションを保存しないのですか?それは合理的で便利なようです(少なくとも私にとっては8))製品のバージョン。迷惑にしたくない設定を気にするユーザーはいません。
HKLMではなくHKCUの何が問題になっていますか?これはユーザーごとになります。残念ながら、ユーザーがレジストリを編集してキーを見つける方法を知っていれば、ユーザーによって変更される可能性があります。
- プログラムに付属しているファイルのうち、変更してはならないファイルを1つ取ってください(少なくとも制限されたユーザーによっては)。そのようなファイルがない場合は、この目的のために作成してください。
- これらの制限されたユーザーに対して、管理者がそのファイルの読み取り専用権限を設定できるようにします。
- プログラムで、そのファイルへの書き込みアクセス権があるかどうかを確認します。