醉卧沙场君莫笑 古来征战几人回
RSS icon Email icon Home icon
  • 重装com+

    Posted on 三月 25th, 2009 admin No comments

    不知为何,给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+了:

    1. 去掉光驱和虚拟光驱里的光盘或映象。保证第2步不会被系统自动找回dll
    2. 删 C:\WINDOWS\system32\dllcache\clbcatq.dll
    3. 重命令 C:\WINDOWS\system32\clbcatq.dll 为其它名如 ~clbcatq.dll
    4. 删 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3 键
    5. 重启系统
    6. 删目录 c:\windows\Registration
    7. 复制 c:\windows\inf\sysoc.inf 到 c:\sysoc.inf,打开c:\sysoc.inf,找到com=那一行,去掉hide字样
    8. 运行命令: sysocmgr /y /i:C:\sysoc.inf ,可以看到com+并发现已经被勾选。直接点下一步安装com+。安装成功。
    9. 运行dcomcnfg检查是否真的成功。
    10. 重启系统。

    OK, 这样com+就正常了,iis也能正常安装了。

  • 关windows自动运行的一种暴力方式

    Posted on 三月 13th, 2009 admin No comments

    关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”

  • 识别域控制器

    Posted on 三月 7th, 2009 admin No comments

    有些东西,知道的发现它很简单,不知道的无从下手。这不就是一例。

    想把一台linux加入到域中,网上记录倒是不少,但是都有个公共的特点,一开始就要输入域控制器和域里的kerberos服务器IP。在windows下,入域很简单,根本不用知道什么IP,在机器名那里改改就进去了。如果整个域是自己做的,那自然知道域控的IP。但如果不是自己做的,是在已经做好的环境如公司里,咋办呢?

    事实上,windows能找到,说明事情是有解的,只是解该怎样找的问题。搜了一圈也终于找到了,答案很简单,那就是微软有个nltest.exe的小工具,下回来运行一下就搞定了:

    用:
    nltest /DCLIST:DOMAINNAME        
    取得域里的控制器列表。它还会列入主域控制器(PDC)


    nltest /DSGETDC:DOMAINNAME  /KDC
    可以得到kerberos的IP。这就终于可以进行下面的尝试了。

    微软的工具是个安装包,我把文件提出来后压缩上传了,可点此处下载。

  • 强制机器重启的一个办法

    Posted on 三月 4th, 2009 admin 1 comment

    一个windows 服务器出现问题了。有些系统服务无法关掉。任务管理器打不开,procexp.exe打不开。无法关机,重启。包括 shutdown.exe 命令行。

    看起来,不断电重启是没有办法了。机器不在身边,远在机房,要去跑一次不容易。只能去那边断电重启了吗?不是!

    分析一下原因,是服务程序出了问题导致系统的关机前关闭服务的步骤出了问题。这个时候还能运行程序,能无程桌面,说明kernel是没有问题的。
    所以,如果强制调用kernel的重启函数,不关闭任何程序和服务,就能重启。

    所以我写了一个程序,不通知任何程序关闭,直接调kernel重启,跟断电差不多!可能会有断电类似的数据问题。

    点这里下载。  这个程序的原理就是直接调ZwShutdownSystem重启。一定要小心,管理员级别帐户不能随便双击,一双击立马黑屏重启。

  • 升级到word press 2.7.1

    Posted on 三月 4th, 2009 admin 3 comments

    升级过程还算顺利。看了升级说明,说只要上传文件,执行/wp-admin/upgrade.php 就行了。我就想,这至少也要先发wp-config.php吧?后来才搞清楚。这里说的上传文件是覆盖式上传,这样原来的文件就都还在。

    但这样做的话,就留下一大堆垃圾了。我比较了一下新的2.7.1和原来的目录的内容,把原来我加的文件copy了过来。不是我加的就不管了。然后运行,升级成功。回首页一看,惨了,一片空白。

    因为想就着这个机会改一下theme,所以我没有copy theme过来,也许是这个原因吧。我把theme copy过去,果然行了。赶紧下个新的theme。设为新theme。OK,一切正常。最后把发表评论的那个图片验证码的逻辑小改了一下。默认这个图片验证码是在提交按钮下面的,移动一行解决。

  • 折腾了一下,加强U盘的启动能力

    Posted on 三月 2nd, 2009 admin 1 comment

    今天新买的群联芯片的 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.

    修改完成后,这个盘就可以在两台机器上都启动了。