存档
不知为何,给xp装iis发现装不了。装到一半安装界面死了,重启依旧。 换作普通人,此时只能重装系统了。没办法,谁让我是IT民工,拿出windbg慢慢调。发现创建一个com+对象时,进入NtRequestWaitReplyPort后死等了。猜是com+问题,好像我以前禁用过com+。 运行 dcomcnfg,其界面直接死掉。晕,再调,发现还是这个com+对象的问题,写段小程序验证,一样是死锁: CoInitialize(0); CLSID clsid; CLSIDFromString(L”{182C40F0-32E4-11D0-818B-00A0C9231C29}”, &clsid); MULTI_QI qi = {0}; qi.pIID = &IID_IUnknown; CoCreateInstanceEx(clsid, 0, CLSCTX_LOCAL_SERVER, 0, 1, &qi); if (qi.pItf) qi.pItf->Release(); CoUninitialize(); 可见的确是com+问题。注册表中删掉这个clsid,发现dcomcnfg可以运行出界面了,但进入后有些操作还是报错。启动msdtc就报错。 用msdtc -resetlog 重置log后,msdtc服务(Distributed Transaction Coordinator)可以启动了。原因是我曾经删掉了C:\WINDOWS\system32\MsDtc下的LOG文件。微软真TM搞笑,没有了LOG你直接创建不行吗,还要像模像样的搞个命令行参数重置LOG。多此一举。 但恢复备分的clsid发现还是出错,只能重装com+了: 去掉光驱和虚拟光驱里的光盘或映象。保证第2步不会被系统自动找回dll 删 C:\WINDOWS\system32\dllcache\clbcatq.dll 重命令 C:\WINDOWS\system32\clbcatq.dll 为其它名如 ~clbcatq.dll 删 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3 键 重启系统 删目录 c:\windows\Registration 复制 c:\windows\inf\sysoc.inf 到 c:\sysoc.inf,打开c:\sysoc.inf,找到com=那一行,去掉hide字样 运行命令: sysocmgr /y /i:C:\sysoc.inf ,可以看到com+并发现已经被勾选。直接点下一步安装com+。安装成功。 [...]