Windows注册表管理员权限被禁
前段时间,使用的Win8.1系统出现了一个很奇怪的问题,系统的标题栏,图标等字体会莫名奇妙地变大,而且通过“显示”设置回正常大小之后,不一会儿又突然变大了。
经过观察,这个行为是运行某些程序时会触发的,例如我的myeclipse中一启动tomcat,系统的字体就会突然变大。
由于查找不到触发这个行为的那个点,也因为不是正版系统,所以觉得也可能是系统bug,找不到什么思路可以抑制这个行为的触发,所以需要换个思路。
经过思考和实验,发现字体的变化是通过修改注册表中相关的项来实现的,因为每次字体变化之后,注册表中相关的项的值也会变化,又发现注册表可以对注册表项进行权限管理。于是就产生了通过禁止当前用户对注册表项的修改权限来抑制字体变化这个思路。
注册表中字体相关的项位于:
对于当前用户,是在HKEY_CURRENT_USER/Desktop/路径下,一般是键名是**Font;
另外,还有个系统默认的项:在HKEY_USERS/.DEFAULT/Desktop/路径下,每个用户刚创建时应该是从这里继承了初始的注册表配置,然后每个用户都可以在此基础上进行个性化的配置
由于我们个人PC的用户一般直接都是管理员,所以相当于我们需要禁止管理员对这些相关注册表项/目录的修改权限。于是乎,我们会发现,这么一禁止之后,管理员好像再也访问不了,也修改不了这些表项,有时我们还是需要调整一下字体什么的。管理员好像是最高权限了,如果连管理员都管理不了,那是不是这个东西就这样动不了呢?经过一番折腾,发现了其实对于文件权限,管理员并非是“权威”的,其实一般来说文件的“所有者(owner)”才是具有最高权限。
注册表项的权限管理中的“高级”中有关于所有者的更改项,不过现在的问题是我们作为管理员已经被禁止了对于这些项的包括权限管理在内的权限,那怎么办呢?我尝试了,对设置了禁止权限的项的上一级目录进行配置,这是可行的,配置了上一级目录的高级权限中的所有者为当前用户,并勾选应用于子对象和子容器这个选项,就可以从该目录开始逐级地应用该修改,于是被禁止了权限的项的所有者也被设置为当前用户了,确定权限修改之后。我们会发现原来被禁止修改的项已经可以被当前用户修改了,我们进行所需的修改之后,可以把这些项的所有者改为除了当前用户的其他用户,这样又可以保证在非必要的情况下不会被一些程序修改。