ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows XP IIS 5.1 安装全指南:i386源配置与元数据库修复

Windows XP IIS 5.1 安装全指南:i386源配置与元数据库修复

简介:本资源是专为Windows XP及Windows Server 2003系统定制的IIS(Internet Information Services)核心安装组件包,面向系统运维人员、老旧系统维护工程师及Web服务初学者,解决在无原始安装介质或网络受限环境下离线部署IIS Web服务器的关键需求。压缩包共296个文件,总大小12.66MB,以116个dl_动态链接支持文件为主干,辅以19个dll系统模块、13个exe可执行程序、40个htm帮助文档及多个inf、cab、chm等安装配置与说明文件,完整覆盖IIS安装所需的驱动、注册表项、脚本模板与帮助体系。内容预览中可见SAMPLE.AS_、DEFAULT.AS_、SEARCH.AS_等经典ASP示例脚本及INFOSPCE.BM_等界面资源,表明该包不仅支持基础安装,还内置了早期ASP应用开发与调试所需的基础运行环境与UI组件。目前已有332人学习下载,是复原XP时代Web服务架构、开展兼容性测试或教学演示的可靠离线安装源。

1. 别急着点 setup.exe:Windows XP i386 安装包里的 IIS 并不是“开箱即用”的 Web 服务

你手头那份标着 “XP_i386文件安装包_IIS” 的光盘镜像或压缩包,大概率是某次系统部署遗留下来的原始 Windows XP Professional SP3 安装介质(i386 目录结构完整),里面确实包含 IIS 5.1 的全部安装文件——但它压根不会自动装好 IIS。这不是 bug,是微软当年的设计逻辑:IIS 在 XP 中被默认禁用、组件需手动勾选、依赖服务必须逐个启动、注册表权限要手工补全。我见过太多人双击winnt32.exe或运行setup.exe后以为“系统装完了”,结果在“添加/删除 Windows 组件”里死活找不到 IIS 选项,或者勾上点了确定却弹出“无法访问源文件”——根源全在 i386 目录路径没配对、ServicePack 补丁没预集成、甚至 NTFS 权限把inetsrv文件夹锁死了。这套环境现在只适合三类人:需要复现老旧业务系统的测试人员、做兼容性验证的 QA 工程师、或是正在啃《Windows 系统底层原理》的老派运维。它不面向现代开发,没有 Docker 镜像,没有一键脚本,所有操作都得回到“打开控制面板→双击图标→看弹窗报错→查事件查看器→改注册表”的原始节奏。装不好?轻则网站打不开,重则系统组件注册失败导致 MMC 控制台崩溃——这可不是玄学,是 i386 架构下 IIS 5.1 和 XP 内核深度耦合留下的真实血泪经验。

2. 准备工作:确认你的 XP 环境是否真的“够格”跑 IIS 5.1

IIS 5.1 在 Windows XP 上不是个独立软件,而是操作系统内建的可选组件,它的存在与否、功能完整性,完全取决于你当前系统的版本、补丁状态和磁盘结构。别跳过这步——90% 的“找不到 IIS 组件”问题,根源都在这里。

2.1 核验系统版本与 Service Pack 级别

IIS 5.1 仅存在于Windows XP Professional版本中,Home Edition 不含该组件。且必须为SP2 或 SP3。SP1 及更早版本虽带 IIS,但存在严重安全漏洞(如 Unicode 目录遍历),微软已终止支持,实际部署中必须排除。

验证方法:
按Win + R,输入winver,回车。
窗口中必须显示类似:

Microsoft Windows XP
版本 2002
Service Pack 3

若显示 SP1 或无 SP 字样,立即停止后续操作。你需要先集成 SP3 到安装源(见 2.3 节),或使用已集成 SP3 的干净镜像。强行在 SP1 环境下尝试启用 IIS,会导致inetinfo.exe进程异常退出,且无法通过事件日志定位——这是个黑匣子式失败。

2.2 检查 i386 目录结构与路径可达性

“XP_i386文件安装包” 的核心是i386文件夹,它必须满足两个硬性条件:

  • 完整性:i386下必须存在svcpack、drivers、system32子目录,且关键文件如iis51.dl_、inetmgr.dll、inetsrv\metabase.xml必须解压后可读(.dl_是 CAB 压缩格式,系统安装时会自动解压)。
  • 路径可访问性:IIS 安装程序(sysocmgr.exe)在调用时,会硬编码查找i386目录下的txtsetup.sif和dosnet.inf。如果i386被放在D:\XP_SRC\i386,而你从C:\下运行命令,它可能因相对路径解析失败而报“源文件不可用”。

验证方式(管理员权限 CMD):

:: 进入你的 i386 所在根目录(例如 D:\XP_SRC) D: cd \XP_SRC :: 检查关键文件是否存在(注意:.dl_ 文件需用 expand 命令验证可解压性) dir /s /b i386\iis51.dl_ dir /s /b i386\inetmgr.dll dir /s /b i386\inetsrv\metabase.xml :: 测试 txtsetup.sif 是否可读(IIS 组件定义在此文件中) findstr /i "iis" i386\txtsetup.sif

提示:findstr命令若返回iis=on,1,iis51.dl_,4,0,0,0,0,0,0,0,0,0,0类似行,说明 IIS 组件已在安装源中正确定义;若无输出,证明该i386是阉割版或被误删,需更换完整源。

2.3 集成 Service Pack 3 到 i386(关键步骤,避坑前置)

如果你的i386来自原始 XP CD(无 SP),必须先集成 SP3,否则即使手动复制iis51.dl_也无法完成组件注册。集成不是简单复制文件,而是用update.exe的/integrate参数将补丁注入安装源。

操作流程(需 SP3 官方更新包WindowsXP-KB936929-SP3-x86-ENU.exe):

:: 1. 创建整合工作目录 mkdir D:\XP_SP3_INTEGRATED xcopy D:\XP_ORIGINAL\i386 D:\XP_SP3_INTEGRATED\i386 /e /i /y :: 2. 运行 SP3 集成(/integrate 后跟目标 i386 路径) D:\Downloads\WindowsXP-KB936929-SP3-x86-ENU.exe /integrate:D:\XP_SP3_INTEGRATED\i386 :: 3. 验证集成结果:检查 i386\svcpack 下是否生成 KBxxxxxx 目录,且 i386\txtsetup.sif 中出现 [SourceDisksFiles] 区段新增条目 dir D:\XP_SP3_INTEGRATED\i386\svcpack

注意:此过程耗时约 15–25 分钟,期间不要中断电源。集成完成后,D:\XP_SP3_INTEGRATED\i386才是你后续所有操作的唯一可信源路径。我一般会把它重命名为i386_sp3_full并校验 MD5,避免和原始目录混淆。

2.4 确认 NTFS 权限与系统盘空间

IIS 安装需向C:\Inetpub写入文件,并修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC注册表键。若系统盘(通常是 C:\)为 FAT32 格式,IIS 安装必然失败——因为 metabase.xml 需要 NTFS 的 ACL 权限控制。同时,C:\Inetpub默认占用约 120MB 空间,加上日志、临时 ASP 编译文件,建议预留 ≥500MB 可用空间。

检查命令:

:: 查看 C:\ 文件系统类型 fsutil fsinfo volumeinfo C: :: 查看 C:\ 可用空间(单位 MB) dir C:\ | findstr "bytes"

提示:若为 FAT32,必须先备份数据,用convert C: /fs:ntfs命令转换(需重启)。此操作不可逆,务必提前快照或备份。

3. 安装 IIS 5.1:绕过图形界面,用命令行精准控制安装源与组件

Windows XP 的“添加/删除 Windows 组件”向导看似简单,实则暗藏陷阱:它默认从%windir%\i386查找源,而你的XP_i386文件安装包很可能在其他盘符;它勾选 IIS 后会静默调用sysocmgr.exe,但错误的源路径参数会导致安装中途退出且无明确日志。最稳妥的方式,是跳过控制面板,直接调用底层安装引擎。

3.1 使用 sysocmgr.exe 手动触发安装(推荐)

sysocmgr.exe是 XP 组件管理的核心工具,位于%windir%\System32。它接受一个应答文件(.inf)来指定安装行为。我们不写复杂 INF,而是用命令行参数直传。

标准安装命令(管理员 CMD 中执行):

sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:"D:\XP_SP3_INTEGRATED\i386\sysoc.inf" /q /r /x

参数详解:

  • /i:%windir%\inf\sysoc.inf:指定系统自带的组件定义主文件(不可省略,否则报错);
  • /u:"D:\XP_SP3_INTEGRATED\i386\sysoc.inf":关键!指向你整合好的 i386 目录下的sysoc.inf,它引用了iis51.dl_等真实文件;
  • /q:静默模式,不弹窗;
  • /r:安装完成后重启(IIS 服务需重启生效);
  • /x:强制重新安装所有已选组件(避免残留旧配置干扰)。

注意:路径中的D:\XP_SP3_INTEGRATED\i386必须替换成你实际的完整路径,且路径必须用英文引号包裹,含空格也必须引。漏掉引号是导致“源路径无效”的最常见原因。

3.2 验证 sysocmgr 是否真正调用了 i386 源

安装过程无界面,如何确认它没走默认路径?看C:\Windows\inf\setupapi.dev.log日志:

:: 安装后立即执行(需等 2 分钟让日志落盘) findstr /i "iis51.dl_ iis51.inf" C:\Windows\inf\setupapi.dev.log

若输出类似:

>>> Section start 2024/05/20 14:22:31.781 cmd: C:\WINDOWS\system32\sysocmgr.exe /i:C:\WINDOWS\inf\sysoc.inf /u:D:\XP_SP3_INTEGRATED\i386\sysoc.inf /q /r /x dvi: Installing 'Web Server (IIS)' from 'D:\XP_SP3_INTEGRATED\i386\iis51.inf'. dvi: Copying file 'D:\XP_SP3_INTEGRATED\i386\iis51.dl_' to 'C:\WINDOWS\system32\dllcache\iis51.dll'.

说明安装源正确命中。若日志中出现C:\WINDOWS\i386\iis51.dl_路径,则证明它错误 fallback 到了系统默认路径——此时需检查/u参数路径是否拼写错误,或i386目录下是否真有iis51.inf(可用dir /s i386\iis51.inf确认)。

3.3 手动注册 IIS 核心 DLL(当 sysocmgr 报“注册失败”时)

极少数情况下(如之前装过残缺 IIS),sysocmgr会提示“无法注册 inetsrv\inetinfo.exe”,此时需手动修复 COM+ 和 IIS 元数据库注册。

分步执行(管理员 CMD):

:: 1. 重置 IIS 元数据库(警告:会清空所有网站配置!仅用于全新安装) cd /d %windir%\system32\inetsrv rundll32.exe iisreg.dll,ReplicateRestore :: 2. 重新注册关键 DLL regsvr32 /s %windir%\system32\inetsrv\inetinfo.exe regsvr32 /s %windir%\system32\inetsrv\iisext.vbs regsvr32 /s %windir%\system32\inetsrv\iisadmin.dll :: 3. 重启 IIS Admin 服务(非 W3SVC) net stop iisadmin /y net start iisadmin

提示:rundll32.exe iisreg.dll,ReplicateRestore是 IIS 5.1 的“后悔药”,它会从%windir%\system32\inetsrv\metabase.bin备份恢复元数据库。若该文件不存在,命令会静默失败,此时需从i386\inetsrv\metabase.xml手动重建(见 4.2 节)。

3.4 启用 IIS 后的首次服务状态检查

安装完成后,不要急着打开 IE 访问http://localhost。先确认底层服务是否真正就绪:

:: 检查关键服务状态(必须为 Running) sc query w3svc sc query iisadmin sc query smtpsvc :: 若你勾选了 SMTP 扩展 :: 检查端口占用(IIS 默认用 80) netstat -ano | findstr :80 :: 检查 inetinfo.exe 进程是否存在 tasklist /fi "imagename eq inetinfo.exe"

理想输出:

  • sc query w3svc返回STATE : 4 RUNNING
  • netstat显示TCP 0.0.0.0:80 0.0.0.0:0 LISTENING且 PID 对应inetinfo.exe
  • tasklist显示inetinfo.exe进程,且 Session# 为 0(系统服务会话)

若w3svc状态为STOPPED,但iisadmin是RUNNING,说明 IIS 管理服务起来了,但万维网发布服务未启动——此时执行net start w3svc,若报错1068(依赖服务无法启动),则需检查IIS Admin Service是否真在运行(sc query iisadmin),并确认COM+ Event System服务也已启动(sc query eventsystem)。

4. 配置与排错:IIS 5.1 的元数据库、默认网站与经典 ASP 支持

IIS 5.1 的配置核心是metabase.xml文件,它不像 IIS 7+ 那样用applicationHost.config,而是一个 XML 格式的二进制元数据库映射。很多“网站打不开”、“ASP 报 500 错误”的问题,根源都在这个文件的权限、路径或节点缺失上。

4.1 修复 metabase.xml 权限(最常翻车点)

默认情况下,C:\Windows\System32\inetsrv\metabase.xml的 NTFS 权限只给SYSTEM和Administrators,而IIS_WPG(IIS 工作进程组)用户无读取权。这会导致inetinfo.exe启动时无法加载配置,W3SVC 服务假死。

修复命令(管理员 CMD):

:: 1. 获取当前目录所有权(防止权限继承失效) takeown /f C:\Windows\System32\inetsrv\metabase.xml icacls C:\Windows\System32\inetsrv\metabase.xml /grant "NT AUTHORITY\INTERACTIVE:(R)" icacls C:\Windows\System32\inetsrv\metabase.xml /grant "NT AUTHORITY\SYSTEM:(R)" icacls C:\Windows\System32\inetsrv\metabase.xml /grant "BUILTIN\Administrators:(R)" icacls C:\Windows\System32\inetsrv\metabase.xml /grant "IIS_WPG:(R)"

注意:IIS_WPG组在 XP SP2+ 中才存在,若icacls报“组不存在”,说明 SP 未正确集成,需回退到 2.3 节重做。

4.2 手动重建默认网站(当 inetmgr 中无“默认网站”时)

有时sysocmgr安装后,Internet 信息服务(IIS)管理器中不显示“默认网站”,或右键“新建”灰掉。这是因为metabase.xml中缺少LM/W3SVC/1节点。

安全做法:不直接编辑 XML,而是用 IIS 自带工具重建:

:: 1. 停止所有 IIS 服务 net stop w3svc /y net stop iisadmin /y :: 2. 删除现有 metabase(会触发重建) del /f /q C:\Windows\System32\inetsrv\metabase.bin del /f /q C:\Windows\System32\inetsrv\metabase.xml :: 3. 启动 IIS Admin 服务(它会自动生成新 metabase) net start iisadmin :: 4. 等待 30 秒,检查是否生成新文件 dir C:\Windows\System32\inetsrv\metabase*

若metabase.xml重新生成,且内容中包含<IIsWebServer Location="/LM/W3SVC/1">节点,则默认网站已恢复。此时再启动w3svc:

net start w3svc

4.3 启用经典 ASP 解析(.asp 文件 500 错误的终极解法)

IIS 5.1 默认禁用 ASP 脚本引擎。即使网站能打开index.html,访问test.asp也会返回HTTP 500 Internal Server Error,且事件日志中无有效线索。

启用步骤(必须按顺序):

:: 1. 确认 asp.dll 已注册(XP SP3 中默认存在) regsvr32 /s %windir%\system32\inetsrv\asp.dll :: 2. 在 IIS 管理器中,右键“默认网站” → “属性” → “主目录”选项卡 → 点“配置”按钮 :: → 在“应用程序映射”选项卡中,点击“添加” :: → 可执行文件:C:\WINDOWS\system32\inetsrv\asp.dll :: → 扩展名:.asp :: → 动作:GET,HEAD,POST,TRACE :: → 确保“脚本引擎”和“检查文件是否存在”均勾选 :: 3. 命令行批量设置(替代 GUI,防漏) cscript %windir%\system32\iisweb.vbs /create "C:\Inetpub\wwwroot" "Default Web Site" cscript %windir%\system32\iisvdir.vbs /create "Default Web Site" "scripts" "C:\Inetpub\scripts"

提示:iisvdir.vbs创建虚拟目录是为后续 ASP 调试准备,scripts目录常用于存放adovbs.inc等库文件。若跳过此步,ASP 中<!--#include file="adovbs.inc"-->会报错。

4.4 配置匿名访问与 NTFS 权限(静态文件 401/403 错误)

IIS 5.1 默认启用匿名访问,但若C:\Inetpub\wwwroot的 NTFS 权限未授予IUSR_<机器名>用户,则访问 HTML 文件会返回401 Unauthorized。

授权命令(替换<MACHINENAME>为你的计算机名):

:: 1. 确认 IUSR 账户存在(XP 中默认创建) net user IUSR_%COMPUTERNAME% :: 2. 授予读取权限(递归) icacls C:\Inetpub\wwwroot /grant "IUSR_%COMPUTERNAME%:(OI)(CI)R" /t :: 3. 验证:此时用 IE 以普通用户身份访问 http://localhost 应显示 "Under Construction"

注意:IUSR_<机器名>是内置账户,密码为空。若net user命令报错,说明账户被误删,需用net user IUSR_%COMPUTERNAME% /add重建,再执行icacls。

5. 常见问题排查:5 条血泪换来的 IIS 5.1 安装避坑清单

IIS 5.1 在 XP 上的安装不是线性流程,而是一连串依赖检查与权限博弈。以下是我踩过的、高频且隐蔽的坑,按“现象→原因→解决”结构整理,每一条都对应一次真实的凌晨两点重启。

5.1 现象:“添加/删除 Windows 组件”中 IIS 选项为灰色不可选

原因:系统检测到当前为 Windows XP Home Edition,或i386\txtsetup.sif中 IIS 组件被注释(;iis=off,...),或C:\Windows\System32\inetsrv\目录下存在残余inetinfo.exe锁定文件。
解决:

  • 运行winver确认是 Professional 版本;
  • 用记事本打开i386\txtsetup.sif,搜索iis=,确保其前无分号,且值为on;
  • 重启进入安全模式,删除C:\Windows\System32\inetsrv\inetinfo.exe及dllcache中同名文件,再重试安装。

5.2 现象:sysocmgr.exe执行后报错“0x80070002:系统找不到指定的文件”

原因:/u参数指定的sysoc.inf路径错误,或该文件中iis51.inf的CopyFiles指令指向了不存在的.dl_文件(如i386\iis51.dl_实际名为iis51.dl)。
解决:

  • 用dir /s i386\iis51.*确认真实文件名;
  • 若为iis51.dl,需用expand i386\iis51.dl i386\iis51.dll手动解压,并修改i386\iis51.inf中CopyFiles段落,将iis51.dl_替换为iis51.dll;
  • 重新运行sysocmgr。

5.3 现象:IIS 管理器中“默认网站”存在,但访问http://localhost返回“Service Unavailable”(503)

原因:W3SVC服务依赖的IIS Admin Service虽运行,但其子服务World Wide Web Publishing Service未真正加载,通常因metabase.xml中LM/W3SVC/1/ServerState节点值为0(Stopped)而非2(Started)。
解决:

  • 停止iisadmin服务;
  • 用记事本打开C:\Windows\System32\inetsrv\metabase.xml;
  • 搜索<IIsWebServer Location="/LM/W3SVC/1">,找到<ServerState>标签,将其值改为2;
  • 保存,启动iisadmin和w3svc。

5.4 现象:ASP 页面显示“Active Server Pages error ‘ASP 0115’ Unexpected error”

原因:asp.dll未正确注册,或C:\Inetpub\wwwroot下的 ASP 文件被 NTFS 权限阻止执行(IUSR账户只有读取权,无“读取与执行”权)。
解决:

  • 重新执行regsvr32 /s %windir%\system32\inetsrv\asp.dll;
  • 运行icacls C:\Inetpub\wwwroot /grant "IUSR_%COMPUTERNAME%:(OI)(CI)(RX)" /t(RX= Read & eXecute);
  • 在 IIS 管理器中,“默认网站”属性 → “主目录” → “执行权限”设为“纯脚本”。

5.5 现象:事件查看器中 Application 日志大量报“Event ID 1009:The IIS Admin Service failed to start”

原因:C:\Windows\System32\inetsrv\目录下iisadmin.dll或iisreg.dll被第三方软件(如旧版杀毒软件)锁定,或HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN的ImagePath值被篡改。
解决:

  • 用Process Explorer(Sysinternals 工具)搜索iisadmin.dll,看哪个进程在占用;
  • 若是杀软,临时禁用后重试;
  • 检查注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISADMIN\Imagepath,确保值为%systemroot%\system32\inetsrv\iisadmin.exe;
  • 运行sfc /scannow扫描系统文件完整性。

6. 验证与收尾:用三步法确认 IIS 5.1 真正跑通,以及我的强制检查习惯

装完 IIS 不等于跑通,尤其在 XP 这种“配置即命运”的环境里。我给自己定了一套铁律:任何 IIS 部署,必须通过三层验证——服务层、协议层、应用层——缺一不可。这不是多此一举,而是过去在模拟项目X中,因跳过第二步导致上线后 DNS 解析正常但 HTTPS 握手失败,排查三天才发现 SSL 端口根本没开的教训。

6.1 服务层验证:确认核心进程与端口绑定

这是最底层的健康检查。不能只信sc query的RUNNING状态,要亲眼看到inetinfo.exe在监听 80 端口,且 PID 与服务一致。

:: 1. 获取 W3SVC 服务的 PID(从 sc query 输出中提取) for /f "tokens=3" %i in ('sc queryex w3svc ^| findstr "PID"') do set W3PID=%i :: 2. 检查该 PID 是否真在监听 80 netstat -ano | findstr ":80.*%W3PID%" :: 3. 强制验证 inetinfo.exe 是否以 SYSTEM 身份运行(非 LocalSystem) tasklist /fi "pid eq %W3PID%" /fo list | findstr "Session"

预期输出:

  • netstat行中PID列等于%W3PID%,且状态为LISTENING;
  • tasklist输出中Session Name为Services(表示系统服务会话),而非Console(交互式会话)。
    若netstat无匹配,说明inetinfo.exe虽在运行,但未绑定端口——此时必查metabase.xml中LM/W3SVC/1/Bindings节点是否为:80:(而非:8080:或空)。

6.2 协议层验证:绕过浏览器,用 telnet 直击 HTTP 协议栈

IE 或 Chrome 访问http://localhost成功,只能证明“前端通”,不能证明“IIS HTTP 栈完整”。真正的协议层验证,是用telnet手动发送 HTTP 请求,看响应头是否含Server: Microsoft-IIS/5.1。

操作步骤:

:: 1. 确保 telnet 客户端已启用(XP 默认关闭) pkgmgr /iu:"TelnetClient" :: 若报错,用控制面板“添加 Windows 组件”勾选 Telnet Client :: 2. 连接本地 IIS telnet localhost 80 :: 3. 手动输入 HTTP GET 请求(注意空行!) GET / HTTP/1.1 Host: localhost :: 4. 回车两次,观察响应

成功响应应包含:

HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: ... Content-Type: text/html ... <html><body><h1>Under Construction</h1></body></html>

提示:若返回HTTP/1.1 400 Bad Request,说明 IIS HTTP 解析器工作正常,但请求格式有误(如 Host 头缺失);若连接直接关闭,说明inetinfo.exe未监听或防火墙拦截——此时检查 Windows 防火墙是否禁用了“文件和打印机共享”例外(IIS 5.1 依赖此例外放行 80 端口)。

6.3 应用层验证:部署一个带服务器端逻辑的 ASP 页面

最后一步,必须验证 ASP 引擎、文件系统、权限三者协同工作。我用一个极简但信息量足的test.asp:

<% Response.Write "<h2>IIS 5.1 Status Report</h2>" Response.Write "<p><strong>Server Time:</strong> " & Now() & "</p>" Response.Write "<p><strong>Script Engine:</strong> " & ScriptEngine & " " & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "</p>" Response.Write "<p><strong>Path:</strong> " & Server.MapPath("/") & "</p>" Response.Write "<p><strong>Metabase Path:</strong> " & Server.MapPath("/iisadmin/") & "</p>" %>

部署步骤:

  • 将上述代码存为C:\Inetpub\wwwroot\test.asp;
  • 确保C:\Inetpub\wwwroot对IUSR_<机器名>有RX权限(见 4.4 节);
  • 用telnet localhost 80发送GET /test.asp HTTP/1.1请求,或直接 IE 访问http://localhost/test.asp。

成功标志:页面显示服务器时间、脚本引擎版本(应为VBScript 5.8)、MapPath返回C:\Inetpub\wwwroot,且无500错误。

从那以后我每次部署 XP 环境的 IIS,都强制走一遍这三步:netstat看端口、telnet发请求、test.asp验逻辑。不是为了炫技,而是因为 i386 架构下,任何一个环节的微小偏差——比如metabase.xml里一个空格、IUSR权限少一个X、asp.dll注册时路径多了一个反斜杠——都会让整个服务变成一个沉默的黑洞,而日志里连一行有效线索都不给你。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进