存档

2009年3月 的存档

不知为何,给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+。安装成功。 [...]

三 25th, 2009 | Filed under 日经

关windows自动运行倒底有几种方法,我是说不清了。至少有一种是从组策略里关。不过这样关还不彻底,程序是不会自动运行了,但是右键菜单里还有,还会加载光驱的图标。不保险。 有一种暴力的方式是,直接让windows不去读取 autorun.ini, 这样光盘自定义的图标都不会显示出来,只显示默认光驱图标的。其原理是,利用windows已经有的重定向ini的技术,把ini重定向到注册表中的一个不存在的分支,从而破坏自动运行机制。 实现步骤:把以下内容存成 anti-autorun.reg ,导入到注册表即可。或者简单一点,直接点此下载运行。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\autorun.inf] @=”#USR:Software\\Microsoft\\Non_exist_node”

三 13th, 2009 | Filed under 软件使用

有些东西,知道的发现它很简单,不知道的无从下手。这不就是一例。 想把一台linux加入到域中,网上记录倒是不少,但是都有个公共的特点,一开始就要输入域控制器和域里的kerberos服务器IP。在windows下,入域很简单,根本不用知道什么IP,在机器名那里改改就进去了。如果整个域是自己做的,那自然知道域控的IP。但如果不是自己做的,是在已经做好的环境如公司里,咋办呢? 事实上,windows能找到,说明事情是有解的,只是解该怎样找的问题。搜了一圈也终于找到了,答案很简单,那就是微软有个nltest.exe的小工具,下回来运行一下就搞定了: 用: nltest /DCLIST:DOMAINNAME         取得域里的控制器列表。它还会列入主域控制器(PDC) 用 nltest /DSGETDC:DOMAINNAME  /KDC 可以得到kerberos的IP。这就终于可以进行下面的尝试了。 微软的工具是个安装包,我把文件提出来后压缩上传了,可点此处下载。

三 7th, 2009 | Filed under 日经

一个windows 服务器出现问题了。有些系统服务无法关掉。任务管理器打不开,procexp.exe打不开。无法关机,重启。包括 shutdown.exe 命令行。 看起来,不断电重启是没有办法了。机器不在身边,远在机房,要去跑一次不容易。只能去那边断电重启了吗?不是! 分析一下原因,是服务程序出了问题导致系统的关机前关闭服务的步骤出了问题。这个时候还能运行程序,能无程桌面,说明kernel是没有问题的。 所以,如果强制调用kernel的重启函数,不关闭任何程序和服务,就能重启。 所以我写了一个程序,不通知任何程序关闭,直接调kernel重启,跟断电差不多!可能会有断电类似的数据问题。 点这里下载。  这个程序的原理就是直接调ZwShutdownSystem重启。一定要小心,管理员级别帐户不能随便双击,一双击立马黑屏重启。

三 4th, 2009 | Filed under 原创软件

升级过程还算顺利。看了升级说明,说只要上传文件,执行/wp-admin/upgrade.php 就行了。我就想,这至少也要先发wp-config.php吧?后来才搞清楚。这里说的上传文件是覆盖式上传,这样原来的文件就都还在。 但这样做的话,就留下一大堆垃圾了。我比较了一下新的2.7.1和原来的目录的内容,把原来我加的文件copy了过来。不是我加的就不管了。然后运行,升级成功。回首页一看,惨了,一片空白。 因为想就着这个机会改一下theme,所以我没有copy theme过来,也许是这个原因吧。我把theme copy过去,果然行了。赶紧下个新的theme。设为新theme。OK,一切正常。最后把发表评论的那个图片验证码的逻辑小改了一下。默认这个图片验证码是在提交按钮下面的,移动一行解决。

三 4th, 2009 | Filed under 日经

今天新买的群联芯片的 8G U盘启动方面遇到一点问题。过程中觉得很奇怪,当然事实上是不奇怪的,只是目前bios和千差万别导致如此了。 首先是发现我的笔记本与公司电脑不一样,调好一边另一边启不动。后来发现grub4dos的启动能力强点。 就用它了,搞定一个 case。 然而又发现,在公司同样的dell 740版电脑,A机器进BIOS发现启动可选USB-HDD,而USB-ZIP旁边标示着not present. B机器进BIOS,情况就反过来了,USB-ZIP可用,而USB-HDD则标为not present。 这两台机器,只有BIOS的版本不一样,其它硬件都一样。因为其中一台是刷过BIOS的。 这两种不同的情况导致了严重的后果。USB-ZIP的那台机器无法启动。显示 Remove disks or other media. Press any key to restart 经查,这句话位于活动活区的第一扇区。把它改为其它值后发现,提示信息跟着变化。 这说明,bios直接启动了第一扇区的代码,未经过mbr.(mbr上装着grub4dos) 接下来就简单了,修改一下这个第一扇区的代码。还是老办法,0×40处的0×00一定要改为0×80,这是非软盘启动的基础。这个字节表示启动的介质类型。不是软盘就得填0×80。还有就是0xe6的四个字节跳转指令全部nop掉。强制用LBA方式(扩展int 13)读盘。这样不同BIOS的CHS参数不一样的问题 可以被绕过。此外0×170处的NTLDR改为GRLDR,强制启动grub4dos. 修改完成后,这个盘就可以在两台机器上都启动了。

三 2nd, 2009 | Filed under boot