在安装iis或者iis中的某个组件的时候,会遇到报错,具体报错内容是:无法复制一个或多个文件,错误代码0x4b8。常规的解决方法,百度一下会出来n多结果,方法都一样,开始——运行——输入CMD回车——再输入esentutl /p %windir%/security/database/secedit.sdb回车,连解释也是一样的,一般情况这样就解决了,重新安装就没有问题。可是最近遇到同样的问题,运行esentutl 后仍然报同样的错。
首先,既然esentutl修复过,系统应该没大问题,想着可能是权限问题了。看看事件查看器吧,果然有提示,来源:Windows File Prot,描述:试图在被保护的系统文件c:\windows\system32\inetsrv\mailmsg.dll上进行替换,为了维护系统稳定…… 原来是文件不能覆盖呀,于是查看了inetsrv文件夹的权限,没有什么问题,虽然是只读属性,不过默认就是,还是直接重命名那个.dll文件吧,不过安装还是报错,继续查看事件查看器,描述中变成另外一个.dll文件了,果断重命名之,根据安装的不同组件,需要重命名的文件也不一样,我是安装smtp组件,先把只读属性去掉,然后重命名了mailmsg.dll,smtpsvc.dll两个文件,然后就成功装完了。
因此这是个很简单的问题,就是看事件查看器,哪个文件不能覆盖,然后直接重命名掉。出现这样的问题,可能是之前iis组件有安装过,然后卸载重装的,也有可能是组件的版本不一致,不过都是iis6.0,怎么会不一致呢,没有深究。