我想创建一个新.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