﻿Windows U 盘 IPv4 DHCP 工具 v1.0.0
================================

适用：Windows 10 / Windows 11，自带 Windows PowerShell 5.1，无须安装软件或联网下载依赖。

使用方法
--------
1. 完整解压 windows-usb-dhcp.zip，把解压后的全部文件复制到 U 盘。
   不要只复制 .cmd 文件，不要在 ZIP 压缩包窗口内直接运行。
2. 插入目标电脑，可先双击 PREVIEW.cmd，查看将处理的网卡，不修改设置。
3. 双击 RUN-DHCP.cmd，在 Windows 管理员权限（UAC）提示中选择“是”。
   普通用户账户可能需要输入管理员凭据。
4. 等待窗口显示结果，按 Enter 关闭。

普通 U 盘在未预配置的现代 Windows 上不能仅凭盘内文件实现插入自动执行。
本包按“无需预装、双击并确认管理员权限”的方式工作；不安装服务、监听器或计划任务。

会修改什么
----------
- 默认处理所有已启用的物理以太网和 Wi-Fi 网卡，包括当前未连接的网卡。
- 将 IPv4 地址和默认网关改为通过 DHCP 获取，并将 IPv4 DNS 改为自动获取。
- Windows 的这项设置会清除所选网卡原有的静态 IPv4 地址及默认网关，可能短暂断网。
- 不改变 IPv6、虚拟网卡、已禁用网卡、Wi-Fi 密码或系统的永久脚本执行策略。
- 若只想改一张网卡，或保留手动 DNS，请使用下方的高级命令。

结果含义
--------
OK ... DHCP; IPv4 ...：已配置 DHCP，且已观察到 DHCP 分配的有效地址。
OK ... DHCP enabled; no DHCP lease yet：已启用 DHCP，但尚未取得地址。
  请接好网线或连接 Wi-Fi，并确认路由器/所在网络提供 DHCP。169.254.* 是自动私有地址，
  不代表 DHCP 分配成功；本工具不会把它当作成功取得租约。
FAILED / ERROR：查看具体错误和日志。若部分网卡成功，其更改会保留，不会自动回滚。

备份和日志
----------
每次实际执行前，先将原始配置保存到本机：
  %ProgramData%\UsbDhcp\Runs\日期时间-随机编号\

before.json       所选网卡的原 IPv4 地址、前缀长度、路由、DNS 和 DHCP 状态
before-netsh.txt   Windows 导出的完整 IPv4 配置，可区分原 DNS 自动/静态模式
run.log           执行过程
result.json       每张网卡的执行结果（正常进入网络操作流程后生成）

如果备份或日志无法创建，脚本不会修改网络。备份只保存在本机，不上传到网站。
需要恢复静态配置时，参考 before.json 和 before-netsh.txt，在网卡的 IPv4 属性中恢复。
before-netsh.txt 是整台电脑的 IPv4 导出，不提供自动恢复按钮，避免覆盖其他网卡后续的更改。

高级用法
--------
在 PowerShell 中切换到解压目录，先查看网卡编号：
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Set-Dhcp.ps1 -Preview

只修改编号为 8 的物理网卡，并保留现有 DNS：
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Set-Dhcp.ps1 -InterfaceIndex 8 -KeepDns -Pause

只修改编号为 3 和 8 的物理网卡，IPv4 DNS 也改为自动：
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Set-Dhcp.ps1 -InterfaceIndex "3,8" -Pause

未指定 -Pause 时适合命令行调用。退出码 0 表示所选网卡配置成功（不保证已取得租约），
退出码 1 表示失败。企业组策略若禁止 PowerShell，需由管理员按组织策略处理。
整个过程不下载或执行远程脚本，不改动服务器或其他电脑的网络。

验证范围
--------
已做 PowerShell 语法检查及模拟 Windows 网络接口的行为测试。
交付环境为 macOS / Linux，尚未做真实 Windows 网卡、UAC 或拔插 U 盘实测。
首次使用建议在本地可操作的电脑上先运行 PREVIEW.cmd，再执行切换并查看结果。

手工验收
--------
1. PREVIEW.cmd 中确认网卡列表；虚拟网卡和禁用网卡不应出现。
2. RUN-DHCP.cmd 执行后，在“网络连接 -> 网卡属性 -> IPv4 属性”中确认 IP 和 DNS 自动获取。
3. 用 ipconfig /all 检查 DHCP 状态和地址；将其与 result.json 对照。
4. 检查备份文件存在，原静态 IP/DNS 已记录，IPv6 和虚拟网卡保持原状态。
5. 取消一次 UAC，确认未改设置；再运行验证重复执行可以正常完成。

卸载：没有常驻程序；删除 U 盘上的文件即可。已经应用的 DHCP 设置会保留。
下载：https://allllm.cloud/usb-dhcp/

参考资料
--------
Microsoft AutoRun 变更：
https://www.microsoft.com/en-us/msrc/blog/2009/04/autorun-changes-in-windows-7/
Microsoft netsh interface：
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netsh-interface
