张康宗(Smallfrogs)
http://www.KZTechs.com
昨天晚上的时候发现,当右键点击Windows Vista的开始里面的快捷方式,选择 Run as administrator 命令的时候,没有UAC提示框弹出,而且consent进程也没有工作。由于这个功能对我非常的重要,立即开始调查。
调查结果如下:
- 所有的 LNK 文件均无法通过右键 — Run as administrator 方式启动
- 控制面板里面的“Change Product Key”点击无效
- 控制面板用户帐户里面的“Change My Environment Variables”点击无效
- 控制面板用户帐户里面的“Configure Advanced User Profile Properties”点击无效
- ……
- 实际上所有和LNK相关的内容,只要是以Run as administrator 方式启动的,都无效,包括使用 Windows API ShellExecute (关于如何使用 ShellExecute 以 run as administrator 方式启动程序,请见《如何将自身进程运行为admin模式》一文)。
看到这个现象,用其他的文件试了试,很正常,因此感觉不是系统内核层面上的问题,而仅仅是LNK文件的文件关联或相关的Shell内容出现错误。
首先检查的是LNK的文件关联数据,但是和原始的数据对比以后,发现没有异常,只不过多了一些软件自定义的Shell扩展。
启动 Process Monitor,对 Explorer.EXE 的行为进行监视,由于内容太多,一时半会找不出头绪,好像没问题……不过没有发现有consent.exe进程创建的记录,因此可以肯定是explorer相关的问题导致的。
再仔细观察了一下LNK文件右键菜单里面的内容,发现一个新增的项目:用RTX发送文件,而且这个项目和Run as administrator 在一组,难道是他?
刚好以前自己写过一个Windows Shell Menus Manager(http://www.kztechs.com/cxtmgr),用它看了看RTX相关的内容对应的文件是 c:\Program Files\Tencent\RTXC\RTXShlMenu.dll,用regsvr32 /u “c:\Program Files\Tencent\RTXC\RTXShlMenu.dll” 命令反注册以后,再次在LNK文件上点击右键,选择 run as administrator,哈哈,UAC弹出来了。
有问题的RTX文件信息:
File Name: RTXShlMenu.dll
File MD5: E61212BD331A32CA86D6B7B8
Common File Version: 1.0.0.1
Compile Time: 2008.03.21, 09:31:19 [GMT]
Digital Sign: NO
安装包信息:
File Name: RTXC2008Beta01(8.0.050.201).exe
File MD5: 8C334C845B6D590E740C9035
Common File Version: 8.0.50.201
Compile Time: 2007.04.09, 07:44:33 [GMT]
Digital Sign: Yes.
Signed by [Tencent Technology(Shenzhen) Company Limited]
希望这篇帖子能够帮助碰到类似问题的人,提供一些思路吧。

