1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 小功能隐藏着大学问---windows的ACL带来的挑战

小功能隐藏着大学问---windows的ACL带来的挑战

时间:2019-11-29 23:20:18

相关推荐

小功能隐藏着大学问---windows的ACL带来的挑战

为什么说这个功能小呢?1.此功能只是在用户装了某一软件时才用得着,用户装这个软件的可能性很小;2.此功能只需要修改一处注册表键值;

于是这样简单实现了:在一个windows服务程序中调用一个修改注册表键值的方法进行修改,单元测试,这个方法很成功。但是在以服务运行的方式进行的测试中,打开此处注册表的方法一直报“找不到注册表路径”的错误。诸位看官,此处注册表的根键为HKEY_CURRENT_USER,大家明白为什么了吗?“是的,与windows的ACL有关,windows服务是以系统权限运行的,在系统权限中,没有HKEY_CURRENT_USER这个键。”

解决方案:1.操作HKEY_USERSHKEY_USERS这个根键可是包含了所有用户的一些信息的,和相应的HKEY_CURRENT_USER刚好一一对应,而且我们要操作的Software键就在其中,于是就利用他来对每一个用户的Software键下的某个键值进行操作。但是我们这个功能得考虑一点,用户一旦装上这个软件后就会在Software键下创建某一键,而我们必须要在短时间内改写此处键的某个值,但是我们根本不知道用户什么时候装啊!

2.注册表监控RegNotifyChangeKeyValue这个方法刚好能满足我们,利用windows的消息机制我们可以做到实时监控各个USER下的注册表改变情况,然后利用回调函数来实现修改相应的键值。但是当尝试监控Software键变化时,发现Software键一直有变化的消息,频繁到感觉只有1秒。想想我们总不至于这么频繁的操作注册表吧。

3.设置定时器但是我们可以这样做,采用轮询的方式遍历HKEY_USERS下每一个用户,然后尝试打开我们要操作的键值,如果不能打开说明此用户未安装此软件,反之用户一定安装了此软件,我们就可以改写此键值来实现我们的功能。定时器的值我们可以自己设定,至少不用那么频繁的去操作注册表了。

(思考:关于权限这一块windows提供了方法可以模仿当前用户权限)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。