我应用程序需要阅读一个选项上启动,以检查它是否应该开始在只读方式。该项不应被允许改用户。

我通常这么做现在使用一个值设定在HKLM软件部分的系统登记。管理员设置的价值和用户不能改变它(他们没有权利修改条目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

请注意,建议仅通过组策略对象在此密钥下设置值,而不是通过直接注册表访问。

其他提示

这一概念的每用户设置区域用户不能改变并没有真正有意义-如果他们用户设置的,"你"(用户)希望能够改变他们。

我可以想到的两个备选方案:

  • 写你设置在HKLM,但有 不同的设置为每个用户和全球后备设置用户没有设定
  • 把它们写在HKCU,但使用 注册的安全APIs预防 他们写作。你可能会需要 权限大于他们的 防止他们撤消的权限 改变。我真的不喜欢这个 选项,但是如果你想跟随它 你可能想开始 RegGetKeySecurityRegSetKeySecurity Api。 此 文章 可能是有趣 好。

我个人认为第一选择将是最简单的,并且还将涉及小狡猾的东西的用户注册树。希望这可以帮助!

两个设置怎么样?

1)在HKLM中设置一个标志,指定只读是此机器上的默认行为。

2)对于需要完全访问权限的任何用户,请在HKCU中设置一个令牌,以启用完全访问权限。

令牌可能是某些盐的加密哈希加上用户名,因此无法复制它以授予其他用户权限。

为什么不在自己的数据库中存储选项?它似乎合理且方便(至少对我来说是8))制作“便携式”时没有任何问题。您的产品版本。没有用户打扰您不希望他们打扰的任何设置。

HKCU与HKLM有什么不对?这将是每个用户。不幸的是,如果用户知道如何编辑注册表并找到密钥,则可以由用户进行更改。

  • 采取的一个文件来与你的节目,即不应该改变的(至少不是由受限制的用户)。如果没有这样的文件,创建一个只是为了这个目的。
  • 让管理员设置只读的权利,文件对于那些受限制的用户。
  • 在程序检查是否已写入该文件。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top