无忧启动论坛

标题: 请教关于路径带变量的运行注册表该如何编写 [打印本页]

作者: 2012ccxbox    时间: 2022-1-5 21:51
标题: 请教关于路径带变量的运行注册表该如何编写
想在系统里集成2345看图王,使用setupcomplete已经静默安装成功,但是文件没有关联
于是在setupcomplete.cmd里面写了这样的语句
"%ProgramFiles%\2345pic\2345PicLoader.exe" -install 79 -invoke-platform-x64
还是没成功,
当然这个命令已经测试是在桌面下可以成功的,
于是考虑到桌面运行
又想在注册表[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]里添加
想请教下 这种路径带变量的注册表该如何填写?


作者: 2012ccxbox    时间: 2022-1-5 21:54
同时还有个疑问在setupcomplete里面使用
reg add "HKEY_CURRENT_USER\SOFTWARE\HashTab\Algorithms\CRC32" /v "Enabled" /d 0x00000001 /t REG_DWORD /f >NUL
这样的语句为啥也没执行?
作者: 阿非    时间: 2022-1-6 07:34
setupcomplete里面是所有的都没执行还是执行了一部分?在远景里面看过一帖子里也提到类似问题,好像是在某些条件下setupcomplete不会执行
作者: 2012ccxbox    时间: 2022-1-6 08:02
阿非 发表于 2022-1-6 07:34
setupcomplete里面是所有的都没执行还是执行了一部分?在远景里面看过一帖子里也提到类似问题,好像是在某 ...

部分未执行
作者: 阿非    时间: 2022-1-6 09:32
2012ccxbox 发表于 2022-1-6 08:02
部分未执行

你看看这个帖子
https://bbs.pcbeta.com/viewthread-1917149-1-5.html
作者: sunsea    时间: 2022-1-6 09:34
将相关键值类型设为REG_EXPAND_SZ试试?
作者: 黑中见白    时间: 2022-1-6 11:01
REG_EXPAND_SZ
类型可以写入环境变量
但是,好像,不执行啊
作者: 2010techon    时间: 2022-1-6 11:14
本帖最后由 2010techon 于 2022-1-6 12:03 编辑

setupcomplete.cmd 最新的官方说明:
https://docs.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/add-a-custom-script-to-windows-setup?view=windows-11
Windows 安装脚本

setupcomplete.cmd和ErrorHandler是 Windows 安装程序过程中或之后运行的自定义脚本。 它们可用于通过使用 cscript/wscript.echo 脚本来安装应用程序或运行其他任务。
%WINDIR%\Setup\Scripts\SetupComplete.cmd:此脚本以本地系统权限运行,并在用户看到桌面后立即启动。 使用 OEM 产品密钥时,此设置会被禁用,Enterprise 版本和 Windows 服务器操作系统除外。
%WINDIR%\Setup\Scripts\ErrorHandler.cmd:当安装程序遇到错误时,将自动运行此脚本。 它以本地系统权限运行。

Win7中关于SetupComplete.cmd的解释:
Windows 安装程序完成后运行自定义脚本

可以在 Windows 安装程序完成之后进行进一步自定义,方法是将命令添加到 %WINDIR%\Setup\Scripts\SetupComplete.cmd 文件。此文件使您能够在用户登录之前安装其他应用程序、运行自定义 Windows 脚本 (cscript/wscript) 或对系统进行其他修改。

因为在用户登录之前,该阶段用户配置HKCU(HKEY_CURRENT_USER)并未加载,所以在这里不能操作(或者说操作无效),需要通过其它方式实现。添加到HKLM注册表项下,或者修改默认用户的hive注册表配置文件,还可以在用户首次登陆后进行修改

在Win7中,执行sysprep封装后导入注册表:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
"a"="reg add \"HKLM\\SOFTWARE\\Microsoft\\Microsoft Security Client\" /v OOBE /t REG_DWORD /d 0 /f"
"b"="regedit /s C:\\Windows\\UI+.reg"
"c"="cmd /c \"del /f /q C:\\Windows\\Panther\\unattend.xml\""
"d"="cmd /c \"del /f /q C:\\Windows\\System32\\sysprep\\unattend.xml\""
"e"="cmd /c \"del /f /q /s C:\\Windows\\Panther\\*.log\""

; 注意斜杠转义的用法\一次转义用\\ 二次转义用\\\
;"a"="reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce /v a /d \"reg add \\\"HKLM\\SOFTWARE\\Microsoft\\Microsoft Security Client\\\" /v OOBE /t REG_DWORD /d 0 /f\" /f"

记得以前在XP的 cmdlines.txt 里可以这么用:
[Commands]
"GUISetup.bat"
GUISetup.bat:
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Ones /d %SystemDrive%\Drivers\Ones.bat /F>nul
reg import %SystemDrive%\Drivers\CFGSetup.reg>nul
Ones.bat:
@echo off&title 安装配置
if exist %SystemRoot%\GUISetup.bat (
rem 执行第一次修改操作
        reg import %SystemDrive%\Drivers\CFGSetup.reg
        rem 清理文件
        del /f /q %SystemRoot%\GUISetup.bat
        rem 添加注册表 登录后执行一次Ones.bat
        reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Ones /d %SystemDrive%\Drivers\Ones.bat /F>nul
) else (
        rem 登录后执行一次 最后清理文件
        regedit /s %SystemDrive%\Drivers\CFGSetup.reg
        del /f /q "%SystemDrive%\Drivers\CFGSetup.reg"
        del /f /q "%~f0"2>nul 3>nul
)
goto :EOF
------------------------------------------------------------------------------- 以上内容基于XP自动安装应答


作者: 2012ccxbox    时间: 2022-1-6 14:23
2010techon 发表于 2022-1-6 11:14
setupcomplete.cmd 最新的官方说明:
https://docs.microsoft.com/zh-cn/windows-hardware/ma ...

十分感谢
明白HKCU为啥不能导入了
我再试下HKLM once
作者: 2012ccxbox    时间: 2022-1-6 14:24
阿非 发表于 2022-1-6 09:32
你看看这个帖子
https://bbs.pcbeta.com/viewthread-1917149-1-5.html

远景打不开了 你哪边正常么
作者: 2010techon    时间: 2022-1-6 17:35
2012ccxbox 发表于 2022-1-6 14:24
远景打不开了 你哪边正常么

看这里:http://bbs.wuyou.net/forum.php?m ... &fromuid=374817
作者: 2012jiashanni    时间: 2022-1-6 17:43
变量换成%ProgramFiles(x86)%试试
作者: 2010techon    时间: 2022-1-6 17:44
2012ccxbox 发表于 2022-1-6 14:24
远景打不开了 你哪边正常么

远景那个帖子参考官方说明:
https://docs.microsoft.com/zh-cn ... quence-not-continue
和我发的第一个链接是同一问题。
8.1以上系统会有这个问题,使用 OEM 产品密钥时,setupcomplete.cmd会被禁用,Enterprise 版本和 Windows 服务器操作系统除外。
作者: 2010techon    时间: 2022-1-6 18:56
本帖最后由 2010techon 于 2022-1-6 19:14 编辑

注册表RunOnce路径里不支持环境变量,需使用绝对路径: "C:\Program Files\2345pic\2345PicLoader.exe"

或者使用命令添加: 添加到键值中的引号需要反斜杠来转义
  1. reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v Ones /d "\"%ProgramFiles%\2345pic\2345PicLoader.exe\" -install 79 -invoke-platform-x64" /f
复制代码
此命令会将环境变量转换为实际值,添加到注册表里的还是绝对路径




作者: 2010techon    时间: 2022-1-6 18:56
本帖最后由 2010techon 于 2022-1-6 18:59 编辑

发重复。删
作者: 2012ccxbox    时间: 2022-1-7 21:25
2010techon 发表于 2022-1-6 18:56
注册表RunOnce路径里不支持环境变量,需使用绝对路径: "C:\Program Files\2345pic\2345PicLoader.exe"

...

非常感谢 已经正确注册
再次请教一个别的问题
使用下面的代码更改机器名可以成功
set pcname=c-20%date:~2,2%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %pcname% /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %pcname% /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %pcname% /f >nul 2>nul
但是如果将set pcname=c-更改为set pcname=tcx-就不能正确进入桌面,只能重启是何原因呢?
作者: 2010techon    时间: 2022-1-10 14:22
2012ccxbox 发表于 2022-1-7 21:25
非常感谢 已经正确注册
再次请教一个别的问题
使用下面的代码更改机器名可以成功
  1. C:\>echo,c-20%date:~2,2%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%
  2. c-20220110-1419
复制代码

注意计算机名长度限制,不能超过15个字符
所以你如果要前面加内容就把后面的时间去掉




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3