QQ 导致 Vista 死机原因的初步分析( 二 )



难道真是键盘加密在作怪?



;假设的理论分析
;我们都知道 , 如果用Administrator账户登陆可以获得计算机的最高权限(此账户默认关闭UAC) , 因此安全性也相当的高 , 所以Microsoft才不建议启用该账户 。假设我们现在以Administrator账户登陆 , 运行QQ程序 , 此时QQ程序可以获得最高的运行权限来执行其所需要的其他服务或程序 , 当然键盘加密就是这样一个它所需要的程序 , 所以这是键盘加密可以顺利的启动 。反观普通账户 , 当我们运行QQ时 , Windows Vista只允许其自身允许 , 而没有其他权限来执行其他所需要的程序 , 因此键盘加密就被关在了权限大门以外 , 从而无法正常允许 , 从而出现了错误提示 。当然如果我们此时选中了QQ的“Run as Administrator”这个选项 , QQ这个进程就具备了最高权限 , 从而可以运行键盘加密 。值得注意的是 , Windows Vista为了防止“Run as Administrator”这个选项的恶意选中而致使一个不安全的程序获得最高权限 , 当我们以Administrator权限允许它是UAC就会启动 , 提示我们是否允许这个未知的可能带来安全隐患的程序获得最高权限允许 , 这就是UAC人性化和安全性的完美体现 。

从上面的分析我们不难也可以找到第2个问题(无法在QQ目录下找到以自己号码命名的用户信息的文件夹)的答案 。因为此时我们使用普通用户账户运行 , 只允许其向指定位置(QQ用户信息文件夹的指定位置被设在 X:Users[用户名]AppDataLocalVirtualStoreProgram FilesTencentQQ;;X指Windows Vista系统盘)写入数据 。当然 , 不能正常地向常规文件夹(X:Program FilesTencentQQ;;X指QQ所在盘符)写入数据的问题 , 也可以从中得以解释!虚拟重定向的“威力”

虚拟重定向主要用于UAC兼容场景 , 当一个老的软件在标准用户环境运行时 , 如果需要访问一个系统目录并且被拒绝 , UAC就会自动将其重定向到其他位置 , 而该应用程序以为自己能够有权限访问该目录 。这样 , 上面笔者奇特的遭遇就不难解释了:标准用户下的QQ无法写入其安装目录 , 所以其他的QQ号码目录会被重定向 , 以便QQ能够正常运行在UAC环境 。虚拟重定向的威力在此体现得淋漓尽致 , 因此Windows Vista的安全性得以进一步地提高 。

巧妙的解决方法
这里介绍两种常规的解决办法:
第一种很简单 , 以普通用户帐号登陆 , 这时QQ得不到足够的权限不能运行键盘加密程序从而不会导致系统崩溃

第二种方法更加彻底 , 那就是直接删除X:Program FilesTencentQQ(X指QQ所在盘符)下的npkcrypt.sys和npkcusb.sys这两个文件 。

至今的疑问

为什么Windows Vista系统不能兼容QQ的键盘加密程序?

推荐阅读