欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

BUG:在manifest里面加入Windows Vista UAC所用信息以后可能导致Windows XP SP2崩溃

BUG描述

以前我曾经发现,如果在一个可执行文件或DLL文件的manifest文件里面加入Windows Vista UAC模块所必须采用的权限描述性说明信息以后,如果该程序在Windows XP SP2下运行,有一定的几率导致系统蓝屏。错误提示为Unknown Hard Error。发生的模块是CSRSS.EXE。

今天我在微软知识库里面确认了这个问题的确存在,详情见:http://support.microsoft.com/kb/921337/en-us

关于 Windows Vista 下对可执行文件或DLL文件修改 manifest 文件的原因:

  1. 由于Windows Vista 需要对进程进行权限检查,默认情况下(UAC支持启动的时候)进程只能够拿到最小的令牌(UAC Token),如果一个进程需要Full Token,则必须经过UAC组件的认证。通过UAC组件认证以后,LSA会将剩余的令牌信息颁发给该进程。
  2. 在Windows Vista里面,进程所用令牌的检查工作是由系统自动确定的(如果需要Full Token,则会在该程序的图标上显示一个Windows安全中心的图标),但是微软还提供的另外一种方法即强行指定所需的权限,操作方法就是在manifest里面加入新的一个节,类似于下面的内容:



  3. 当加入上述节内容以后,系统会从manifest里面知道该进程需要管理员权限才能正常工作,于是会通过LSA将完整的管理员令牌颁发给该进程。

由于Windows XP SP2的缺陷,如果在一个可执行文件或DLL文件的manifest文件里面加入Windows Vista UAC模块所必须采用的权限描述性说明信息以后,如果该程序在Windows XP SP2下运行,有一定的几率导致系统蓝屏。错误提示为Unknown Hard Error。发生的模块是CSRSS.EXE。

已发表 2006年7月21日 13:31 作者 smallfrogs

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2006年7月21日 14:19 by Smallfrogs' Technical BLOG

# BUG:在manifest里面加入Windows Vista UAC所用信息以后可能导致Windows XP SP2崩溃

2006年7月21日 15:05 by ahpeng

# re: BUG:在manifest里面加入Windows Vista UAC所用信息以后可能导致Windows XP SP2崩溃

可以预见,很快会有正式的hotfix发布,否则ISV将被迫在安装包里提供两套内容,一个for Vista,一个for XP/2000。
2006年7月23日 0:10 by smallfrogs

# re: BUG:在manifest里面加入Windows Vista UAC所用信息以后可能导致Windows XP SP2崩溃

遗憾的是,即使有hotfix,也不会有很多用户安装。问题在于不是所有的用户都能会主动安装Hotfix,而且这个Hotfix还需要SP2的支持。

而ISV在没有签署协议的情况下是不能分发Microsoft补丁程序的,因此这个BUG给所有有产品需要运行在Windows Vista的ISV造成了不小的麻烦。



2006年11月22日 13:42 by Windows Vista技术博客

# 关于 manifest 导致 Windows XP SP2 崩溃问题的跟踪说明

在 2006年7月21日 的时候,我曾经撰写过一篇 blog :《BUG:在manifest里面加入Windows Vista UAC所用信息以后可能导致Windows XP SP2崩溃》 来说明在给...

说说您的看法?

(必填) 
必填 
(必填)