|
还没解决吗?我现在叫KIMI帮你:
本身语法上没有问题,但你说“第一次登录时自动以注册的用户名新建一个同名的管理员用户”,这涉及到Windows XP 安装过程中的自动应答机制,也就是无人值守安装(Unattended Setup)。
✅ 正确做法:使用 unattend.txt 或 winnt.sif
在 Windows XP 的无人值守安装中,不能仅靠 net user 命令在首次登录时自动创建用户,因为:
%FName% 是Windows 安装过程中输入的“注册用户名”,但它不会自动成为环境变量。
首次登录时,系统还没有加载你自定义的脚本或命令,除非你明确告诉它这么做。
✅ 解决方案:使用 Winnt.sif + Cmdlines.txt + GUIRunOnce
✅ 步骤如下:
🔧 1. 创建 Winnt.sif(放在安装源 \i386 目录下)
这是无人值守安装的核心配置文件。
ini
复制
[Unattended]
UnattendMode=FullUnattended
OemSkipEula=Yes
OemPreinstall=Yes
TargetPath=\WINDOWS
[GuiUnattended]
AdminPassword=*
EncryptedAdminPassword=NO
AutoLogon=Yes
AutoLogonCount=1
OEMSkipRegional=1
OEMSkipWelcome=1
[UserData]
ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
FullName="MyUser"
OrgName="MyOrg"
ComputerName=*
[Identification]
JoinWorkgroup=WORKGROUP
[Networking]
InstallDefaultComponents=Yes
[GuiRunOnce]
Command0="%SystemDrive%\Install\createuser.cmd"
🔧 2. 创建 createuser.cmd(放在 $OEM$\$1\Install\ 目录下)
这个脚本会在首次登录时自动运行,并读取注册用户名(从注册表或文件)。
cmd
复制
@echo off
setlocal enabledelayedexpansion
:: 从注册表读取注册用户名(FullName)
for /f "tokens=3*" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "RegisteredOwner" 2^>nul') do set FName=%%A %%B
:: 去掉前后空格
set FName=%FName:~0,20%
:: 创建用户并加入管理员组
net user "%FName%" /add
net localgroup administrators "%FName%" /add
:: 可选:设置密码
net user "%FName%" MyPassword123
:: 可选:删除默认的 Administrator 用户(谨慎)
:: net user administrator /delete
endlocal
🔧 3. 确保文件结构正确
你的安装源目录结构应如下:
复制
\i386
\winnt.sif
\$OEM$\$1\Install\createuser.cmd
✅ 总结
表格
复制
问题 原因
%FName% 无效 它不是环境变量,必须从注册表读取
net user 没生效 没有在首次登录时运行脚本
需要自动创建用户 必须使用 GUIRunOnce 或 RunOnce 机制
✅ 最终效果
安装完成后,首次自动登录,然后运行 createuser.cmd,自动创建一个与注册用户名相同的管理员用户。
如需我帮你生成完整的 winnt.sif 和 createuser.cmd 模板,告诉我你希望的注册用户名、密码、是否删除 Administrator,我可以直接给你打包。 |
|