简介这是一份适用于Windows Server 2003环境的IIS 6.0完整安装资源包专为解决系统默认组件缺失、DLL文件不完整导致安装失败或Web服务功能受限的问题。资源共包含263个文件压缩后约11.55MB涵盖dll、exe、in_、cab、chm等多种类型dll文件用于支撑HTTP协议处理、ASP与ASP.NET解析等核心功能exe与ex_为安装与配置工具in_为安装定义文件cab为组件压缩包chm为离线帮助文档。安装时只需按提示指向本包即可补齐所需组件。目前已有127人学习/下载适合需要在Server 2003上部署或维护IIS 6.0站点的系统管理员与Web开发者借助该包可快速完成环境搭建减少因缺少动态链接库而反复排查的麻烦。1. 还能看到 IIS 6.0 安装包多半是给老系统抬轿子还在跟 IIS 6.0 打交道的人一般不是图新而是被遗留系统绑着老 OA、内网报表、工控数据上传页服务器清一色 Windows Server 2003光驱和原厂安装盘却早就没了下落。网上流传的“IIS6.0安装包(附带所需DLL文件).rar”这类压缩包解决的就是这个尴尬——系统装 IIS 报到一半说缺 dll 文件手边又没有安装光盘可指。这篇笔记把 IIS 6.0 的组件构成、离线安装的两条路径、DLL 缺失的翻车点和验证方法一次讲完适合做历史系统运维、虚拟化迁移或内网生产环境重建的人对照操作。2. 先搞清 IIS 6.0 依赖什么为什么一个 exe 搞不定2.1 组件树IIS 6.0 在 2003 里是一堆子组件拼起来的IIS 6.0 在 Windows Server 2003 里不是一个孤立程序而是挂在“应用程序服务器”组件下面的一个子集。打开控制面板 →“添加或删除程序”→“添加/删除 Windows 组件”能看到的完整路径是应用程序服务器 → 详细信息 → Internet 信息服务(IIS) → 详细信息里面又拆成万维网服务、FTP 服务、SMTP 服务、NNTP 服务和公用文件五项。很多人勾选时只勾了“Internet 信息服务(IIS)”没展开勾“万维网服务”结果装完发现管理工具里有 IIS 管理器但“网站”和“默认网站”节点都不存在等于装了个空壳。这是我处理这类安装包时见到的第一个高频误操作。公用文件iis_common是地基万维网服务iis_www依赖它FTP、SMTP 各自独立ASP.NET 在 2003 里是另外一个大项和 IIS 平级不是 IIS 的子组件需要先装 .NET Framework 才能启用。还有一层容易被忽略IIS 6.0 有两种运行模式。默认是“IIS 6.0 工作进程隔离模式”网站请求由 w3wp.exe 承载应用池之间进程隔离也可以切换成“IIS 5.0 隔离模式”全部站点塞进 inetinfo.exe。这个模式切换藏在网站属性 → 服务选项卡里改完要重启 W3SVC 服务。如果是给别人做部署建议保持默认别为兼容老应用去切 5.0 模式否则一个站点崩溃拖死整个服务的情况会重演。2.2 DLL 从哪里来i386 目录是安装机制的黑匣子安装 IIS 6.0 时系统不是凭空生成文件的。Windows 组件安装机制会读取系统盘里的源文件目录把 asp.dll、w3svc.dll、iisadmin.dll 这些 dll 文件复制到 system32\inetsrv写注册表再注册 COM 组件。源目录默认是系统安装光盘或本地硬盘的 i386 文件夹这个路径信息记录在注册表 SourcePath 里。如果你手头只有 ISO 镜像常见做法是把 ISO 解压整个 i386 文件夹放到 C:\i386这样安装时无论弹多少次“需要文件”对话框都能直接指到本地。精简版系统或万能 Ghost 版系统通常已经把 i386 删掉来省空间这就是“明明有这个组件却装不上”的根本原因。很多流传的“IIS6.0安装包(附带所需DLL文件).rar”里面真正值钱的部分就是一个完整的 i386 目录和少量手工注册用脚本而不是某个单独的安装 exe。这个 RAR 常见结构我一般拆三块看第一块是 i386 文件夹对应系统组件源文件第二块是 VC6 运行库或 msxml 这类前置依赖解决“缺少某个 dll 文件”的报错第三块是一个 InstallIIS.bat 和手工注册脚本。拿到包第一件事不是双击运行而是先解压到 C 盘根目录确认 i386\w3svc.dll 真实存在。文件路径里带中文或带空格安装到一半会弹出更莫名的错误。2.3 缺 dll 文件的三种真实场景场景一系统安装源指向不可用的光驱。2003 装在虚拟机里很常见安装时光驱里插的是 VMware Tools 镜像或别的 ISOIIS 安装程序按注册表里的 SourcePath 去找自然找不到 asp.dll。场景二精简版系统把 i386 删了。这类系统装好只有 1GB 多C:\Windows 下没有 i386也没有 dllcache。此时安装 IIS 会在复制文件阶段反复弹窗提示“无法复制文件 w3svc.dll”。场景三组件复制完但 COM 注册失败。有些汉化封装包把文件塞进去了注册表动作没做全表现为 IIS 管理器打开空白或者 MMC 服务报错。这种情况光重装组件没用需要手动 regsvr32 几个关键 dll 文件。所以拿到任何“IIS 6.0 安装包”类资源第一步永远是检查 i386 和 DLL 文件是否完整第二步是决定走控制面板 GUI 还是无人值守命令行。下面两条路都写清楚。3. 安装 IIS 6.0 的两条主路GUI 与无人值守命令行3.1 控制面板安装指定源路径的完整操作先把解压出来的 i386 放到 C:\i386然后按这个顺序操作控制面板 → 添加或删除程序 → 添加/删除 Windows 组件勾选“应用程序服务器”点“详细信息”勾选“Internet 信息服务(IIS)”再点“详细信息”必须勾选“万维网服务”和“公用文件”FTP、SMTP 按需勾选一路确定回到组件列表后点“下一步”出现“插入磁盘”对话框时点“浏览”定位到 C:\i386我一般会把整个 i386 目录复制到 C:\ 根目录而不是保留长中文路径原因就是老安装程序对长路径和 Unicode 路径支持太差路径一长就连弹三次对话框每次都让你重新指一次非常消磨耐心。如果复制完点“下一步”仍然提示源文件不可用检查一下 i386 文件夹里是不是只有一级目录有些压缩包解压后还会套一层同名文件夹路径就变成了 C:\i386\i386必须手动把内层提出来。安装完成后管理工具里会出现“Internet 信息服务(IIS)管理器”注意 2003 的 IIS 管理器是 MMC 管理单元运行方式是在“运行”里敲 inetmgr不是敲 inetmgr.exe因为实际执行的是注册到 MMC 的 inetmgr.dll。3.2 用 sysocmgr 做静默安装一条命令装完维护一批同配置服务器时每台都走 GUI 点组件太慢我一般会准备一个无人值守应答文件用 sysocmgr 命令装。这个命令在 2003 上是原生的不需要额外装工具。; answer.txtIIS 6.0 无人值守应答文件 ; 保存时务必用 ANSI 编码UTF-8 会导致 sysocmgr 读取失败 [Components] iis_commonOn iis_wwwOn iis_ftpOff iis_smtpOff iis_nntpOff aspnetOffsysocmgr /i:C:\WINDOWS\inf\sysoc.inf /u:C:\i386\answer.txt /c应答文件里 iis_common 必须设为 Oniis_www 依赖它只开 iis_www 不开 common 的话安装会直接失败或装上后无法创建默认站点。aspnet 先保持 Off等装好 .NET Framework 再回来开顺序反了会导致 ASP.NET 的脚本映射注册不上。/i 参数指定 sysoc.inf 的路径这是系统组件安装的定义文件/u 指定无人值守应答文件/c 表示安装完成后不弹“确定”对话框方便脚本继续往下走。命令执行过程没有进度条看起来像卡死其实后台在复制文件。耐心等五到十分钟不要重复执行否则系统会提示“另一个安装程序正在进行”。3.3 手工注册 DLL组件装完但管理器打不开时的补救如果安装过程没报错但 IIS 管理器打开后一片空白或者提示“MMC 管理单元初始化失败”常见补救是手动注册关键 dll 文件。2003 的 IIS 相关 DLL 集中在 C:\Windows\system32\inetsrv 下。regsvr32 /s C:\Windows\system32\inetsrv\iisadmin.dll regsvr32 /s C:\Windows\system32\inetsrv\w3svc.dll regsvr32 /s C:\Windows\system32\inetsrv\inetmgr.dll regsvr32 /s C:\Windows\system32\inetsrv\asp.dll/s 参数表示静默注册注册成功不会有任何弹窗所以注册完要用 regsvr32 不带 /s 再跑一次其中一个确认弹出“DllRegisterServer 成功”或者配合 sc query W3SVC 验证服务状态。注意 asp.dll 是 ASP 脚本宿主如果 Web 服务扩展里 ASP 显示为“禁止”注册它不会自动解除禁止后面避坑章节单独讲。这里要特别提醒很多 RAR 里附带的“注册 DLL.bat”会在注册表里写 HKCU 或 HKLM 混淆位置而且没有检查管理员权限。2003 上只要当前账户有管理员权限就直接注册系统级组件不需要右键“以管理员身份运行”那是 Vista 以后的事。如果在 2003 上右键菜单没有“以管理员身份运行”这个选项直接双击运行即可前提是当前登录账户在 Administrators 组里。4. 避坑排查DLL 文件安装最常见的五个翻车点4.1 “无法复制文件”反复弹窗源路径指向死路现象安装到复制文件阶段弹窗提示“无法复制文件 w3svc.dll”或“需要 Windows Server 2003 安装盘上的文件 asp.dll”点重试没用点浏览找 i386 又过一会儿继续弹另一个文件。原因注册表里的 SourcePath 指向了光驱或不存在的位置安装程序每复制一个 dll 文件都会去那个死路径找一次。精简版系统则是因为根本没有源文件目录。解决把 i386 目录放到 C:\i386安装时弹窗就浏览到这个目录。如果弹了三四个文件之后仍然重复直接取消安装检查 C:\i386 里文件是否齐全特别是 asp.dll、w3svc.dll、iisadmin.dll 这三个核心文件是否存在。缺文件说明 RAR 本身不完整换一个来源别硬撑。4.2 提示“需要 VMware install disk 上的文件”虚拟光驱里插错了盘现象在 VMware 虚拟机里装 IIS弹窗提示“需要 vmware install disk 上的文件 xxx.dll”。原因虚拟机的光驱里还挂着 VMware Tools 的 ISO安装程序按光驱路径找系统源文件找到的是 VMware Tools 盘里面的 DLL 和 IIS 完全不相关。解决把虚拟光驱里的 VMware Tools ISO 换回系统安装 ISO或者直接把 ISO 解压到本地 C:\i386 再指过去。我习惯用后一种因为系统 ISO 挂在光驱里每次弹窗都得重新确认盘符而且虚拟机切换光驱 CD/DVD 设置里如果选了“开机时连接”重启后又会占用盘符不如本地目录一劳永逸。另外装完 IIS 再装 VMware Tools顺序不要反过来先装系统组件再装虚拟化增强组件。4.3 安装完成但 IIS 管理器打不开MMC 一片空白现象组件装完管理工具里能看到“Internet 信息服务(IIS)管理器”双击后 MMC 窗口是空的左侧树没有本地计算机有时还会报“管理单元未能初始化”。原因inetmgr.dll 没有注册成功。这常见于封装版系统文件复制了但注册表写入被精简策略跳过。解决按 3.3 节的方式先 regsvr32 inetmgr.dll再注册 iisadmin.dll然后关闭 MMC 重新打开。注意注册完要在“运行”里重新输入 inetmgr 打开不要只刷新旧窗口MMC 不会自动重载已经失败的单元。4.4 静态页面正常asp 文件返回 500现象装好 IIS 后http://localhost/ 能看到欢迎页但放一个 test.asp 进去访问直接 500 错误而 html 文件一切正常。原因IIS 6.0 默认把 ASP 执行禁用了。这是 6.0 安全策略的一部分“Web 服务扩展”里 Active Server Pages 状态是“禁止”而不是“允许”。解决打开 IIS 管理器找到“Web 服务扩展”选中“Active Server Pages”点“允许”。这个操作不会立即生效但也不用手动重启服务等几秒访问即可。同理如果将来要跑 ASP.NET需要先装 .NET Framework再到 Web 服务扩展里允许 ASP.NET v2.0.50727 这一项——很多人装完 .NET 不点允许应用一直 404 或 500。4.5 页面报 404 但文件确实存在权限不是玄学是继承问题现象IIS 装完默认站点能访问把网站目录换到 D:\myweb 之后访问 D 盘上的页面全部 404日志里没有错误码只有 404。原因IIS 6.0 的工作进程w3wp.exe以网络服务身份运行默认对 C:\inetpub\wwwroot 有访问权限但你自己新建的 D 盘目录默认不给网络服务读取权限于是请求进来了文件读不到表现为 404 而不是 500。解决右键网站目录 → 属性 → 安全添加“Network Service”账号给“读取”和“列出文件夹目录”权限。目录换了之后权限默认不会继承这是最容易被当成玄学的点实际就是 ACL 没给。另一个习惯是尽量别把网站目录放在 D 盘根目录建一个 D:\web\site1 再设置权限否则根目录 ACL 改起来影响面很大。5. 安装后验证服务、HTTP 响应和 ASP 执行5.1 先查服务状态再打开管理器装完 IIS第一步不是打开浏览器而是先确认 W3SVC 服务真的起来了。在命令提示符里执行sc query W3SVC net start | findstr /i W3SVCsc query 的输出里STATE 显示 RUNNING 说明万维网服务在运行net start 那行能看到服务名带不带 W3SVC 字样。如果服务没起来先执行 net start W3SVC 看具体报错。2003 的默认站点由 W3SVC 服务承载服务起不来浏览器访问 localhost 必然是连接失败而不是 404。服务状态确认后再通过管理工具打开 IIS 管理器确认左侧树里有“网站 → 默认网站”且默认网站状态是“正在运行”。如果默认网站是停止的右键启动启动时若报“另一个程序正在使用此文件”多半是 80 端口被占用比如装了别的 Web 服务或迅雷。5.2 用 VBS 验证 HTTP 响应避开浏览器兼容问题2003 自带浏览器是 IE6访问 localhost 能出 IIS 欢迎页就算通。但批量验证时我更习惯写一个十几行的 VBS 脚本执行一台服务器只要几秒而且不依赖 IE 组件是否正常。 check_iis.vbs - 验证 IIS 6.0 HTTP 响应 Set http CreateObject(Microsoft.XMLHTTP) http.Open GET, http://127.0.0.1/, False http.Send If http.Status 200 Then WScript.Echo IIS_OK status http.Status Else WScript.Echo IIS_FAIL status http.Status End If在命令行执行 cscript /nologo check_iis.vbs输出 IIS_OK 说明默认站点能响应。脚本里 GetObject 和 Microsoft.XMLHTTP 都是 2003 系统自带的组件不需要额外安装。如果你的安装包附带的是 IIS 管理器的检查脚本原理也类似无非是把 HTTP 请求换成 WMI 查询。注意这个脚本请求的是站点根目录只能证明 IIS 起来了如果要验证某个具体站点的首页把 URL 改成 http://内网IP/ 或带主机头的地址即可。输出里显示 status401 或 403优先查目录权限和匿名访问设置而不是先怀疑服务没装好。5.3 写一个 ASP 探针页验证动态脚本是否真正执行静态页面通不代表 ASP 能跑。放一个探针页到 C:\inetpub\wwwroot\test.asp% LanguageVBScript % % Response.Write IIS6_OK Response.Write brTime: Now() %写完后浏览器访问 http://localhost/test.asp看到 IIS6_OK 和当前时间说明 ASP 脚本引擎工作正常。如果返回 500回看 4.4 节检查 Web 服务扩展里 ASP 是否已经允许。如果返回源码说明 asp.dll 的脚本映射没注册回到 3.3 节重新注册 asp.dll然后重启一次 W3SVC 服务。ASP 探针页建议测完就删掉别留在生产目录里。2003 的 ASP 报错默认不显示具体信息如果探针页 500可以临时把“显示友好的 HTTP 错误”关掉IE 的 Internet 选项里然后访问页面看到的是类似“Active Server Pages error ASP 0115”这样的原始错误信息再按错误编号排查。6. 进阶把整套安装做成一个批处理反复用6.1 一键安装脚本把 sysocmgr、注册 DLL、验证串起来给运维同事用的安装步骤最终都会收敛成一条命令。把应答文件和检测脚本放到 C:\i386 下面写一个 InstallIIS.batecho off set SRCC:\i386 if not exist %SRC%\w3svc.dll ( echo [ERROR] 找不到 w3svc.dll请检查 i386 目录是否完整 pause exit /b 1 ) sysocmgr /i:C:\WINDOWS\inf\sysoc.inf /u:%SRC%\answer.txt /c net start W3SVC cscript /nologo %SRC%\check_iis.vbs echo 安装流程结束默认站点地址 http://localhost/ pause脚本里的第一道检查是看 i386 目录里有没有 w3svc.dll这比直接执行安装能省下不少不必要的等待。sysocmgr 执行完后立刻 net start W3SVC 确保服务处于启动状态然后调用 check_iis.vbs 做一次 HTTP 验证。注意 2003 没有 PowerShell用批处理和 cscript 是最稳妥的组合别在脚本里写任何 PowerShell 命令。如果机器上已经存在网站或其他服务占用了 80 端口这个脚本不会做任何判断建议在安装前手动执行 netstat -ano | findstr :80 检查一遍。脚本只适合干净环境生产服务器上请先在测试虚拟机里跑通。6.2 多台服务器重复部署i386 目录放到共享路径同一批规格的服务器不需要每台都去本地放一份 i386。把解压后的 IIS 文件夹放到内网文件服务器上共享出来每台机器执行net use Z: \\fileserver\i386_share /persistent:no sysocmgr /i:C:\WINDOWS\inf\sysoc.inf /u:Z:\answer.txt /c net use Z: /delete用 /persistent:no 让共享映射在命令结束后自动断开避免留下不必要的登录会话。共享目录的权限建议只开放给运维组并给只读权限防止内网里被误改文件。这样同一个源目录可以服务十几台服务器装到后来你甚至会习惯性地把新机器的 i386 直接复制到本地路径短省去网络波动引发的复制中断。我个人的教训是不要把安装包里的 dll 文件单独拿出来复制到 system32先确认整个 i386 完整再动手。曾经为省事只拷了几个核心 dll结果 ASP 报错无法定位原因最后全盘重装才解决。这些年维护老系统的经历让我养成了一个习惯所有操作前先备份 answer.txt 和 i386 目录到另一个磁盘出了问题有后悔药可吃。希望这篇文章能让你在 IIS 6.0 这条老路上少走几个来回祝顺利。本文还有配套的精品资源点击获取