
简介一份面向Windows XP SP3系统中需要搭建Web服务或学习早期IIS管理的运维人员与爱好者的IIS 5.0组件包可解决原版系统缺少该组件、无法通过系统盘直接安装的难题适用于离线部署或老平台维护场景。压缩包约为11.27MB内含安装向导所需的核心源文件用户只需指定解压目录即可作为组件安装来源免去另备光盘或联网获取的麻烦。截至目前已有151人学习/下载适合网络受限或追求稳定离线安装的使用需求。组件包支持完整启用IIS 5.0服务覆盖HTTP网页发布、FTP文件上传与下载、SMTP邮件传输及NNTP新闻组等功能在此基础上可进行安全加固如设置强密码、禁用不必要服务并利用IIS管理器创建虚拟主机、配置端口与主机头以实现单机多站同时通过访问日志分析流量、借助性能监视器掌握资源占用还可另行安装.NET Framework扩展ASP.NET应用是维护老旧服务器与理解早期微软Web技术体系的实用工具。1. 还在找 XP_IIS5.0 组件的人多半是被老 ASP 系统卡住了接手一台十几年没动的工控机系统还是 Windows XP里面跑着一套用 ASP Access 写的老进销存。网卡驱动有数据库文件也在就是网页打不开——因为重装完系统以后IIS 组件根本没装。你搜“XP_IIS5.0 组件”想要的就是这一小块东西Windows XP 自带的那套 Internet 信息服务组件版本号习惯上写作 IIS 5.0XP 上实际是 5.1装上它这台老机器才能重新变成一台能跑 ASP 的 Web 服务器。这篇文章按我实际维护这类老环境的路径写组件是什么、怎么在 XP 上装、参数怎么配、以及最容易翻车的五个坑。适合维护老业务系统的工程师也适合在虚拟机里复现 XP 环境的人。2. XP 上的 IIS 5.0 组件到底是什么版本差异与安装前置条件2.1 组件名里的 5.0 与 5.1为什么总被混着叫先解决一个命名问题。微软官方按操作系统区分得很清楚Windows 2000 带的是 IIS 5.0Windows XP Professional 自带的是 IIS 5.1。XP 的“添加/删除 Windows 组件”对话框里不会直接写“IIS 5.1”而是写“Internet 信息服务(IIS)”只有打开管理工具里的“Internet 信息服务”看属性才能看到具体版本号。老资料、老教程里十有八九都写“XP 安装 IIS 5.0 组件”因为 XP 的 IIS 5.1 和 2000 的 IIS 5.0 在安装方式、目录结构、asp.dll 处理脚本的机制上几乎一致大家按习惯把整套运行时组件叫成 IIS 5.0 了。实操当中“XP_IIS5.0 组件”这个东西其实有几种常见形态一是从 XP 原版安装盘勾选安装的官方组件包装完版本是 5.1二是在 Windows 2000 机器上把 IIS 5.0 相关文件提取出来再拿到 XP 上补装多见于手里只有 2000 安装盘的老环境三是网上流传的各种“IIS 5.0 一键安装包”本质上是把组件文件连同注册表项做成了静默安装脚本。我自己维护老机器时更愿意用第一种因为后两种一旦缺文件装完会出现 ASP 能开首页却跑不了脚本这种半瘫状态排查起来特别耗时间。这套组件在系统里由几个关键文件构成主进程 inetinfo.exe、元数据库 Metabase.bin、脚本解析器 asp.dll以及管理界面用的 iis.msc。Metabase.bin 是 IIS 5.x 的命根子站点、虚拟目录、默认文档、端口、认证方式的配置全存在里面IIS 6.0 以后才换成 XML 格式的 MetaBase.xml。判断“组件到底装没装全”第一眼看 inetinfo.exe 在不在第二眼看 asp.dll 在不在第三眼看 Metabase 能不能正常读写比看那个“已安装”状态靠谱得多。为了不把范围扩大我按“XP 上安装并使用这套组件”来讲。下面这张表把 IIS 5.0 和 IIS 5.1 的差异点列出来方便你判断自己手里的安装盘到底能用在什么场景对比项IIS 5.0IIS 5.1默认宿主系统Windows 2000 Server / ProfessionalWindows XP Professional组件安装入口控制面板-添加/删除程序-Windows组件同左ASP 版本ASP 3.0ASP 3.0默认并发连接Server 版几乎无限制Pro 版受限约 10 个连接核心文件inetinfo.exe、asp.dll、iis.dllinetinfo.exe、asp.dll、版本标记 5.1配置存储Metabase.binMetabase.bin适用场景老 ASP 站点、局域网 OA、教学系统同左且兼容 5.0 配置习惯XP 上装的 IIS 组件功能上足够应付老 ASP 站点ASP 3.0、VBScript/JScript 脚本、Access 数据库、FTP 发布、SMTP 转发都支持。真正要认清楚的是它没有 IIS 6 的“应用程序池”也没有每站点独立进程隔离所以一个站点挂了整个万维网服务可能都要跟着重启。这种机制下别急着甩锅给代码先看服务状态。2.2 装组件前先确认三项前置条件第一项是系统版本。只有 Windows XP Professional 的“添加/删除 Windows 组件”列表里才有“Internet 信息服务(IIS)”XP Home Edition 的组件列表里根本没有这一项。这是硬门槛我见过不少人在精简版 XP 上翻半天找不到 IIS 组件先看清自己装的是 Pro 还是 Home能省下半小时。第二项是安装源。装 IIS 组件时复制文件阶段会从安装光盘或指定的 i386 目录里读取组件文件。所以手里要有XP Pro 原版光盘或 ISO或者一个完整的 XP i386 目录。建议先建一个 D:\xp_i386把安装盘里的 i386 整个拷进去后面装组件、补文件、跑 sfc 都会用到。这一步花两分钟但它就是第 3 章命令行安装能顺利走完的前提。在虚拟机里跑 XP 时把官方镜像挂载为光驱再操作同样可行网上下的 xp 虚拟机镜像文件也一样进系统后先确认 i386 目录在不在。第三项是清理残留。如果这台机器以前装过 IIS 但装了一半或卸载不干净Metabase.bin 里会残留旧的站点配置再装时会报“元数据库不一致”。常见做法是先去控制面板把已存在的 Internet 信息服务彻底卸载一遍确认 C:\WINDOWS\system32\inetsrv 目录里没有 inetinfo.exe 残留然后再走安装流程。硬盘剩余空间有 100MB 基本够用IIS 组件全装完大约占 4060MB。提示手动从别处拷贝 asp.dll 和 iis.msc 进来不算“安装组件”注册表和元数据库没有建立服务起不来。唯一靠得住的路径是组件安装界面或 sysocmgr 命令。3. 在 Windows XP 上安装 IIS 5.0 组件从控制面板到命令行3.1 控制面板手装勾选哪几个子组件最稳纯新手装这套组件最简单的方式就是控制面板步骤如下点击“开始 → 控制面板 → 添加或删除程序”。点左侧的“添加/删除 Windows 组件”系统会花几秒钟扫描组件列表。在“Windows 组件向导”里找到“Internet 信息服务(IIS)”勾选它。点“详细信息”按需勾选子组件如果只跑 ASP 网站勾选“万维网服务”和“Active Server Pages”。点“下一步”向导报“所需文件”这时把 XP 安装光盘放进光驱或者把“文件复制来源”里的路径改成你本地的 i386 目录确定后继续。等文件复制完成后点“完成”打开“管理工具”确认“Internet 信息服务”图标存在。“详细信息”里的子组件清单我一般这样勾万维网服务必选这是 HTTP 站点和 ASP 的宿主Active Server Pages 必须一起勾上否则网页打开是 200但 .asp 文件会被下载而不是执行FrontPage 扩展是老版 FrontPage 编辑站点时才需要现在基本都是静态页面手动改不选FTP 服务看你要不要给局域网同事传文件传就选不传别选少开一个服务少一个安全面SMTP 服务是让 IIS 里的 CDONTS 发邮件用的老 OA 系统里常见如果你迁移的旧系统有“网站给我发邮件”这功能就得选上。子组件用途建议万维网服务HTTP 站点、ASP 主服务必选Active Server PagesASP 脚本解析跑 ASP 必选FrontPage 2000 服务器扩展老 FrontPage 发布站点平时不选FTP 服务FTP 上传/下载需要才选SMTP 服务通过 CDONTS 发信旧系统有发信功能时选安装完成后不要急着解压网站文件先做两个动作右键“我的电脑 → 管理 → 服务和应用程序 → 服务”确认 World Wide Web Publishing 服务的启动类型是“自动”、状态是“已启动”然后打开 IE 访问 http://localhost看到 IIS 默认欢迎页或者 localstart.asp 提示页就说明组件核心没装坏。3.2 用 sysocmgr 命令行把组件装出“后悔药”无人值守与指定安装源控制面板适用于单台机器但如果你要装三台五台 XP 虚拟机或者在远程桌面里操作组件向导动不动弹“文件复制来源”对话框等你人盯上去效率就很低。XP 的组件安装统一由 sysocmgr.exe 驱动它读取 C:\WINDOWS\inf\sysoc.inf 里的组件定义。先用下面这条命令打开图形版组件安装界面效果和控制面板完全一样C:\WINDOWS\system32\sysocmgr.exe /i:C:\WINDOWS\inf\sysoc.inf/i 参数指定组件定义文件如果不带 /u系统会弹出图形界面带宽受限或想纯静默时加上 /q 可以隐藏界面。真正有用的是无人值守参数。我一般会先写好一个 answer 文件例如 D:\xp_iis_install.txt[Components] iis_commonOn iis_wwwOn iis_aspOn iis_ftpOff iis_smtpOff然后执行C:\WINDOWS\system32\sysocmgr.exe /i:C:\WINDOWS\inf\sysoc.inf /u:D:\xp_iis_install.txt /q这段命令的关键在于 answer 文件里的组件名要和 sysoc.inf 里的键名完全一致。iis_common 是 IIS 公共文件必须 Oniis_www 是万维网服务iis_asp 是 Active Server Pagesiis_ftp 和 iis_smtp 按需开。顺序上有依赖关系iis_www 依赖 iis_commoniis_asp 依赖 iis_www如果把 iis_www 设为 Off 而 iis_asp 设为 On装出来的结果不稳定。前面 set 也可以把端口写进去不过新手阶段不建议碰默认 80 端口够用。还有一个让命令行真正发挥价值的细节安装源。控制面板装到一半要文件时只能手输路径且路径窗口有时会被其他窗口挡住。命令行方式下提前把安装盘的 i386 整个拷到 D:\xp_i386再在系统里指明源路径复制文件阶段就不会再弹窗。很多网上的“IIS 5.0 组件安装包”本质就是 i386 里的 IIS 相关文件加上这段无人值守脚本理解了原理之后你自己也能做一个而且更可靠。注意/q 不是无人值守的开关它只是隐藏界面。真正要无人值守必须同时给 /u:answer.txt。只给 /q 不带 /u会出现界面消失但安装不执行的情况容易被误判为失败。4. 配置 IIS 组件默认站点、ASP 支持与权限模型4.1 第一个网站从哪来默认站点与 inetmgr 实测装完组件后系统自动建了一个“默认网站”主目录指向 C:\Inetpub\wwwroot。打开方式有两种开始菜单里的“管理工具 → Internet 信息服务”或者直接在“运行”框输 inetmgr。这两个入口打开的是同一个 iis.msc 管理单元里面能看到“默认网站”以及系统自带的脚本虚拟目录。先验证服务状态。打开命令提示符执行下面两条命令看 80 端口是否监听再确认监听进程是哪一支netstat -ano | findstr :80 tasklist /svc | findstr inetinfo第一行命令返回的最后一列是 PID把它和第二行里的进程对应上正常情况下inetinfo.exe 的 PID 会和 80 端口监听的 PID 一致。如果 80 被占用会先看到别的进程占着端口这就是第 5 章要讲的常见故障。确认监听正常后浏览器访问 http://localhostIIS 欢迎页能打开说明组件本身、默认站点、端口三件事都通了。接下来把你的网站目录放进 C:\Inetpub\wwwroot 下例如 wwwroot\oa\。随后右键“默认网站 → 新建 → 虚拟目录”别名写 oa路径指向 C:\Inetpub\wwwroot\oa访问 http://localhost/oa/ 就是你的应用。这一步是后续所有排错的前提静态 HTML 能开、ASP 不能开、数据库连不上、权限报错分别对应不同位置。先把默认站点这条基线做扎实后面才不会乱。4.2 让 ASP 脚本跑起来的两个开关脚本映射与应用设置IIS 5.x 对 ASP 的支持有个显著特点只要你在组件里勾了 Active Server Pages装完默认就能直接跑 .asp不像 IIS 6 还要去“Web 服务扩展”里单独启用。IIS 5.x 根本没有“Web 服务扩展”那个页面别把 IIS 6 的经验搬过来。真正需要动手的是两个细节。第一个是脚本映射。右键“默认网站 → 属性 → 主目录 → 配置”在“应用程序映射”列表里找 .asp。正常情况下它指向 C:\WINDOWS\system32\inetsrv\asp.dll。如果列表里没有或者路径被改成了别的位置ASP 访问就会返回纯文本源码或 404。手动重建时按下面参数填参数值可执行文件C:\WINDOWS\system32\inetsrv\asp.dll扩展名.asp动作GET,HEAD,POST脚本引擎勾选第二个是调试开关。站点属性 → 主目录 → 配置 → 调试有“启用 ASP 服务器端脚本调试”和“启用客户端脚本调试”两个勾选项。日常运行一律不勾“启用 ASP 服务器端脚本调试”一旦勾上脚本执行出错时会让浏览器挂在一个调试死循环里整个站像卡死一样只在开发期需要看变量时临时勾上。写个最小测试页验证整条链路我一般会在站点根目录放一个 t_asp.asp内容如下% LanguageVBScript % % Response.Write IIS 组件运行正常当前时间 Now() %浏览器访问 http://localhost/t_asp.asp看到时间输出而不是源码就说明 asp.dll 映射、脚本权限、IUSR 账户三件事全对了。这里有个容易误导人的细节文本编辑器保存时如果把文件存成 .asp.txtIIS 会当成未知类型处理直接下载所以检查真实后缀比检查代码内容更重要。4.3 权限模型IUSR 账户与 NTFS 目录权限IIS 5.x 默认启用匿名访问对外呈现的账户是本机的 IUSR_机器名。所有不需要输入用户名密码的网页请求都带着这个账户的令牌去读磁盘文件。因此网站目录在 NTFS 分区上时权限配置是“能不能打开网页”的关键比代码本身更常出问题。先检查匿名访问是否打开右键站点 → 属性 → 目录安全性 → 身份验证和访问控制 → 编辑确保“启用匿名访问”勾选匿名账户显示 IUSR_你的机器名。接下来给网站目录授权。我通常不用图形界面的属性页一条条点直接命令提示符里用 cacls 处理比如让 IUSR 账户对 Access 数据库文件有读写权cacls D:\web\data.mdb /E /G IUSR_XP-PC:F cacls D:\web /E /G IUSR_XP-PC:R/E 是保留原有权限追加/G 是赋予权限后面的 R 表示读取、F 表示完全控制。注意“IUSR_XP-PC”中的 XP-PC 是机器名要改成你实际的机器名。如果目录在 FAT32 分区上cacls 会直接报错因为 FAT32 没有文件级 ACL只能靠共享权限控制安全隔离基本为零。老机器上如果数据库目录还在 FAT32我的建议是趁这次迁移把它转成 NTFS。权限排错有一个最快路径静态 .html 能看ASP 报 401.3十有八九是 IUSR 对 asp.dll 所在路径或脚本目录缺“读取”权限连纯文本都 403先查站点主目录“读取”是否勾上、默认文档里有没有 index.asp 或 default.asp。把这三处权限理顺绝大多数 ASP 老站就能复活。5. IIS 5.0 组件安装与运行避坑五个常见问题与排查5.1 添加/删除里根本没有 IIS 组件项现象打开“添加/删除 Windows 组件”列表里翻遍没有“Internet 信息服务(IIS)”或者列表本身是空的点按钮直接无反应。原因两种情况最常见。一是系统根本是 XP Home Edition微软没给它做 IIS 组件这属于换系统版本才能解决的问题二是精简版 XP 在封装时把 sysoc.inf 里 IIS 相关条目删掉了或者组件存储也就是 C:\WINDOWS\system32\CatRoot 等目录损坏导致组件向导读不到条目。解决先用 winver 确认系统是 Professional如果是 Pro打开 C:\WINDOWS\inf\sysoc.inf搜索有没有 iis 开头的行。没有就把原版 XP 安装盘里同路径的 sysoc.inf 拷回来覆盖再重开组件向导。若向导报“组件存储已损坏”一类错误用 XP 安装盘引导进恢复控制台运行 sfc /scannow 修复系统文件或者做一次覆盖式修复安装——这一步会保留已装的软件但对老机器建议先做整机镜像再操作给自己留后悔药。5.2 安装中提示“需要文件”找不到 i386现象组件向导走到复制文件阶段弹出“需要文件”对话框路径指向光驱但光驱里没盘或指向一个不存在的 i386 目录。原因安装源不完整是最常见的原因。很多人手里的 XP 盘是 ghost 精简版IIS 组件文件被删得七七八八还有一种情况是系统装好后把自带的 i386 目录挪走了。i386 不光是安装源里面还打包了 IIS 组件运行所需的 dll 文件少了它复制阶段必停。解决把 XP 原版安装盘的 i386 目录整体拷到 D:\xp_i386弹窗出现时把“文件复制来源”改为 D:\xp_i386点确定继续。如果没有任何安装盘但系统里残留了 C:\WINDOWS\Driver Cache\i386也先试着指过去。最稳妥的路线是还没安装前就建好本地源目录再用 sysocmgr /u 无人值守安装根本不会弹窗。这个坑的血泪经验是装到一半换源即使装完了后来做 sfc 或加装子组件时还是会反复问你要文件所以本地源目录一定要留好。5.3 默认网站已停止80 端口被占用现象IIS 管理器中“默认网站”显示已停止右键启动报“另一个程序正在使用此文件进程无法访问”。原因安装时 IIS 默认绑定 80 端口。XP 时代常用的迅雷、某些聊天工具以及视频软件都有抢占 80 端口的毛病尤其是迅雷装完就把 80 占了IIS 服务根本抢不回来。另外系统防火墙也可能拦截本机访问 localhost。解决在命令提示符里用 netstat -ano | findstr :80 找到占用端口的 PID再用 tasklist /svc 看是哪个进程。是无关软件就结束它或改它的端口不想动它就把默认网站的 TCP 端口改成 8080右键“默认网站 → 属性 → 网站”里的 TCP 端口改掉访问 http://localhost:8080 同样能到站点。顺手把 Windows 防火墙里“例外 → Web 服务器(HTTP)”勾上避免局域网同事访问不了。5.4 ASP 页面返回 404 或源码原样显示现象静态 HTML 正常但访问 .asp 文件时要么 404要么浏览器原样显示 ASP 源码像记事本打开一样。原因前者通常是 ASP 子组件没装或者脚本映射丢失后者更明确——IIS 不知道 .asp 该交给谁处理脚本映射被破坏。常见于从网上拷了“IIS 5.0/5.1 组件包”但运行库版本不对注册表里脚本映射相关项错位。解决先进“主目录 → 配置 → 应用程序映射”看 .asp 是否映射到 asp.dll没有就按 4.2 的参数手动添加。再不行就用添加/删除 Windows 组件把 Internet 信息服务先卸载、重启、重装重装时务必勾上 Active Server Pages 子组件。这里提醒一句网上流传的一键组件包装完能把静态页面跑起来但 ASP 不干活就是因为省掉了 asp.dll 的脚本映射注册。验证方法很简单——看映射列表再看 asp.dll 文件是否存在。5.5 静态页也打不开401.3、403 与 kernel32.dll 错误现象访问网站根目录报 401.3 未授权或 403 禁止访问更严重时启动 IIS 管理器或安装组件直接报 kernel32.dll 相关错误组件装完服务也起不来。原因401.3 几乎都是 NTFS 权限问题IUSR 账户对网站目录没有“读取”权限403 则可能是主目录里没有默认文档或者目录安全性里匿名访问被关掉。kernel32.dll 报错一般是系统文件损坏或精简版系统缺文件IIS 的元数据库读写依赖操作系统底层的文件映射接口底层不稳IIS 就跟着崩。解决401.3 直接按 4.3 的 cacls 给 IUSR 加读权限403 检查站点属性“文档”里是否加了 index.asp、default.asp。出现 kernel32.dll 错误时先用系统安装盘跑 sfc /scannow 修复系统文件再重装 IIS 组件顺序不能反。修完还弹错大概率是精简版系统本身阉割了文件服务相关组件这种情况下换一个完整的 XP Professional 安装源或虚拟机镜像比逐个补 dll 更快也更省时间。6. 把 XP_IIS5.0 组件做成离线备件归档、验证与迁移6.1 归档组件与一条验证命令老环境最怕的就是机器挂了身边没有安装盘。我的习惯是装好 IIS 并确认站点能跑之后立刻把两份东西归档一份是原版 i386 目录一份是当前可用的 inetsrv 运行目录和网站根目录的压缩包。归档命令在命令提示符执行xcopy C:\WINDOWS\system32\inetsrv D:\backup\inetsrv /E /I /Y xcopy C:\Inetpub D:\backup\Inetpub /E /I /Y/E 复制子目录包括空目录/I 表示目标路径是目录并自动创建/Y 覆盖时免确认。这份归档不是用来直接拷回去的那不算安装容易踩第 2 章说过的坑它真正的价值是在没有原版盘的新机器上你可以对着文件清单快速判断哪些组件文件缺失。归档后做一次状态确认用 IIS 自带的脚本查站点状态cscript C:\Inetpub\AdminScripts\adsutil.vbs GET W3SVC/1/ServerState返回值为 2 表示 IIS 服务正在运行返回 4 是已停止。这一条命令在 XP 的 IIS 5.x 上比打开管理界面更快适合写进巡检脚本每次重装完 IIS 组件或迁移系统后先跑它。6.2 迁移到另一台 XP 或虚拟机的正确姿势迁移整站时最常见的翻车是把原机器的 Metabase.bin 直接拷到新机器覆盖结果新机器 IIS 服务起不来因为元数据库里记录的机器名、IUSR 账户 SID 和系统路径对不上。正确做法是新机器上用原版镜像把 IIS 5.1 组件装好跑一次 adsutil.vbs 确认运行状态然后把网站目录整个复制过去在 IIS 管理器里新建虚拟目录指过去再按 4.2 确认脚本映射按 4.3 重新授权 IUSR 账户。Access 数据库文件记得一并给写权限否则网站能开但登录不进。我最后一次做这件事是在虚拟机里给客户复现一个十多年前的教材网站。当时图快直接覆盖了元数据库结果服务起不来前后折腾了大半个晚上。后来的教训很简单凡是涉及 IIS 组件和站点迁移元数据库一律不覆盖站点配置手动重建耗时最多十分钟但每一步都可控、可回退。希望帮到你。本文还有配套的精品资源点击获取