用于向注册表添加条目的 Windows 批处理脚本

问题描述 投票:0回答:1

我正在尝试创建一个批处理脚本,该脚本将重现我手动创建的注册表中的条目。该脚本将成为我正在开发的小型 WEB 应用程序的安装过程的一部分。

注册表中所需的条目实际上是从 JavaScript 调用的自定义协议的定义,以激活外部进程(在本例中为 PowerShell 脚本)。

手动生成的条目如以下快照所示,它可以根据需要工作:

到目前为止,我的脚本正确地复制了显示的条目,除了最后一个(

command
部分)抱怨语法错误。这是尝试注册定义的最后部分并触发错误消息的脚本片段:

set scriptpath=%~dp0
reg query HKCR\fddmyalbs2\shell\open\command
set Query_Result=%errorlevel%

if "%Query_Result%"=="0" (
    echo "HKCR\fddmyalbs2\shell\open\command OK!"
) else (
    echo "HKCR\fddmyalbs2\shell\open\command missing. Registering..."
    reg add HKCR\fddmyalbs2\shell\open\command /t REG_SZ /d "powershell.exe" %scriptpath%FD_Albums_MNGR.ps1 "^%1" /f
)

任何人都可以识别语法错误是什么(在

reg add
命令中)吗?

谢谢。

batch-file windows-10 registry
1个回答
0
投票

整个事情可以通过单行批处理文件来实现:

@%SystemRoot%\System32\reg.exe Query "HKCU\SOFTWARE\Classes\fdmyalbs\shell\open\command" 1>NUL 2>&1 && (Echo HKCU\SOFTWARE\Classes\fdmyalbs\shell\open\command OK!& %SystemRoot%\System32\timeout.exe /T 3 /NoBreak 1>NUL) || (Echo HKCU\SOFTWARE\Classes\fdmyalbs\shell\open\command missing. Registering...& %SystemRoot%\System32\reg.exe Add "HKCU\SOFTWARE\Classes\fdmyalbs\shell\open\command" /VE /D "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File \"%~dp0MyAlbums\FD_Albums_MNGR.ps1\" \"%%~1\"" 1>NUL)

请注意,这使用注册表编辑器映像中的信息,而不是批处理文件中的修改信息(与该信息不匹配)。请不要更改注册表根键和子键,我提供的都是正确的,(您不应该使用

HKCR
根键,它本质上是
HKLM\SOFTWARE\Classes
HKCU\SOFTWARE\Classes
的合并视图)
。如果这确实适用于计算机的所有用户,您可以将
HKCU
的所有实例替换为
HKLM
,但请注意,必须以提升的权限运行脚本。此外,我还改进了您的 PowerShell 命令,因此我建议您也不要管它。


如果您希望它更具可读性,那么您可以将行分成几行:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "RegKey=HKCU\SOFTWARE\Classes\fdmyalbs\shell\open\command"

%SystemRoot%\System32\reg.exe Query "%RegKey%" 1>NUL 2>&1 && (
    Echo %RegKey% OK!
    %SystemRoot%\System32\timeout.exe /T 3 /NoBreak 1>NUL
) || (Echo %RegKey% missing. Registering...
    %SystemRoot%\System32\reg.exe Add "%RegKey%" /VE /D "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File \"%~dp0MyAlbums\FD_Albums_MNGR.ps1\" \"%%~1\"" 1>NUL
)
© www.soinside.com 2019 - 2024. All rights reserved.