如何解决组件服务中的“红色箭头”问题

 

在分布式环境中,当调用DCOM组件或者COM+应用程序出现问题时,我们第一件需要做的事是打开Components Manager来检查或者重新设置COM+/DCOM参数。然而,当打开Component Services的时候,可能会有一个"红色箭头"出现在"My Computer"节点上: 

  

如果我们试图展开"My Computer"节点,可能会显示多个错误信息。为了解决这种问题,我们可以参照以下Check list,这样大多数常见的问题都可以得到解决:

 1. 确保MSDTC服务处于Started状态;

 

2. 确保Users 用户组拥有注册表HKEY_CLASSES_ROOT\CLSID子键的Read权限。如果 Users group没有这样的权限,COM+系统应用程序服务可能无法正常启动,并导致"红色箭头"问题。可以参阅以下步骤来赋予Users 用户组相应权限(请在操作前备份HKEY_CLASSES_ROOT\CLSID):

  • a. 打开 Regedt32,找到HKEY_CLASSES_ROOT\CLSID;
  • b. 选择CLSID,点击菜单栏中的Security -> Permission;
  • c. 在Security选项卡中,添加Users到允许列表中,并赋予Read权限。
  • d. 单击Advanced按钮,选中"Replace permissions entries on all child objects with entries shown here that apply to child objects",之后单击"Apply"。

3. 确保用户Everyone对C:\Windows\Registration及其子对象拥有阅读权限,可以使用命令"cacls"来配置,具体请参阅:

909444 You may experience various problems after you install the Microsoft Security Bulletin MS05-051 for COM+ and MS DTC

https://support.microsoft.com/default.aspx?scid=kb;EN-US;909444

4. 保证COM+ System Application服务处于Started状态:

 

5. 确保MSDTC服务允许Authenticated Users查阅服务状态。可以在命令行窗口中使用以下命令来查看:

sc sdshow msdtc

如果Authenticated Users用户组没有对MSDTC服务对象的query权限,这意味着大多数用户没有权限来获取MSDTC服务的状态,例如:

(A;;CR;;;AU)

我们需要运行此命令来为Authenticated Users赋予足够权限,然后重启DLLHOST.exe(请首先备份"sc sdshow msdtc"命令的输出信息):

sc sdset msdtc D:(A;;CCLCSWRPLOCRRC;;;S-1-2-0)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;CCLCSWRPLORC;;;NS)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

注意:关键部分是: (A;;CCLCSWLOCRRC;;;AU),而其他字符串来自于"sc sdshow msdtc"命令的结果。

如需有关ACL的说明信息,请参考:

914392 Best practices and guidance for writers of service discretionary access control lists

https://support.microsoft.com/default.aspx?scid=kb;EN-US;914392

注意:该权限更改是针对Service Object ACL,而并不会影响NTFS文件属性。

该设置亦在我们之前的博客中有详尽阐述,请参考:

https://blogs.msdn.com/asiatech/archive/2009/05/22/security-audit-failure-560-caused-by-permission-setting-of-msdtc-service.aspx

https://blogs.msdn.com/asiatech/archive/2009/04/13/cannot-expand-the-com-list-in-the-component-services-ui-error-0x8004e00f-or-0x8004d01b.aspx

6. 如果以上步骤没有帮助,则需要查看Application和System的事件日志。有时我们会考虑重新构建COM+系统。这一步骤可能有些冒险,如果您之前已经安装了很多COM+应用程序,在重构COM+系统后会需要您重新安装这些COM+应用程序:

How to clean up a damaged COM+ catalog

https://support.microsoft.com/?id=315296

在您开始第6步骤之前,请最好先向您的Application team 和Microsoft Support进行咨询。

谢谢!

Internet 开发者支持小组