如何从 CLI 创建新的 .reg 文件

如何从 CLI 创建新的 .reg 文件

我想创建一个新.reg文件并将其添加到注册表中,如本文

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:DoesNotExist"

这很简单。但我想编写脚本。我以为我可以直接使用REG ADD,但我不知道如何@="@SYS:DoesNotExist"在最后合并该部分。

答案1

创建批处理文件 - 例如fix.bat- 包含以下内容:

echo REGEDIT4 > fix.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf] >> fix.reg
echo @="@SYS:DoesNotExist" >> fix.reg

运行批处理,它将创建包含所需内容的文件。您可以手动合并 .reg 文件,也可以更进一步,使用批处理文件将使用fix.reg脚本创建的文件合并到 Windows 注册表中:

echo REGEDIT4 > fix.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf] >> fix.reg
echo @="@SYS:DoesNotExist" >> fix.reg
regedit.exe /S fix.reg

答案2

如果您曾经导入该密钥并使用 进行查找REG QUERY
则会看到第一个指的是具有内容@类型的默认密钥。 REG_SZ@SYS:DoesNotExist

因此,要直接使用以下批处理来创建密钥REG ADD,由于需要管理员权限,因此会自动提升自身(UAC 会介入):

:: Q:\Test\2018\11\29\SU_1379397.cmd
@echo off & setlocal EnableExtensions DisableDelayedExpansion
:: if not already running as admin, elevate and run batch again
net file 1>nul 2>&1 || (
  powershell -ExecutionPolicy unrestricted -Command ^
  "Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c %~f0 %*'"
  goto :eof
)
:: Put code here that needs elevation
@Echo off
Set "Key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf"
Set "Dat=@SYS:DoesNotExist"
REG ADD "%Key%" /ve /t REG_SZ /d "%Dat%" /f
TIMEOUT /T 10

相关内容