此registry脚本在reg编辑器(它表示为二进制数据)中写入一个REG_NONE
空值:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\keyname] "valuename"=hex(0):
(上图中数据描述的英文翻译为“零长度二进制值”)
我需要在批处理中重现(以改善Reg2Bat转换器),但是当我尝试这样做:
REG ADD "HKCU\keyname" /V "valuename" /T "REG_NONE" /D "" /F
它增加了数据:
也许reg.exe命令与REG_NONE
不兼容? (命令帮助说它支持的价值,但是…你看到)
我真的可以添加一个REG_NONE
空值?
我发现迄今唯一令人讨厌的选项是创建一个.reg文件并导入一个:
call :regnone HKEY_CURRENT_USER "keyname" valuename goto :eof :regnone rem create a reg file echo Windows Registry Editor Version 5.00 > none.reg echo [%~1\%~2] >> none.reg echo "%~3"=hex(0): >> none.reg rem import it the registry reg import none.reg del /q none.reg goto :eof
REG_NONE是一个特殊的类型,由于实现细节(命令行工具针对字符串和多字符串进行了优化)只能由RegSetValueEx窗口api创建,其长度为二进制值。 像WMI提供者那样的高层API只允许SetBinaryValue,并且没有SetNoneValue
。 除了REG
之外,还有一个使用wmic的选项,它位于WMI提供程序旁边,但仍不允许创建REG_NONE类型(它确实使您可以创建零长度的REG_BINARY,但REG也无法使用去做)
使用此命令可以获得的最接近的空二进制值(由MC ND提供)
reg add "hkcu\volatile environment" /v test /t reg_binary
是两个零字节: 00 00
,由两个空字符终止(不提供/d
)多字符串的选项
只是我的基于@KennyBOT的扩展解答回答:
:Add_Special_Value :: Support for adding an special registry value type. Set "KeyRoot=%~1" Set "KeyName=%~2" Set "ValueName=%~3" Set "ValueType=%~4" Set "ValueData=%~5" Set "RegFile=%TEMP%\%ValueType%.reg" If /I "%KeyRoot%" EQU "HKCR" (Set "KeyRoot=HKEY_CLASSES_ROOT") If /I "%KeyRoot%" EQU "HKCU" (Set "KeyRoot=HKEY_CURRENT_USER") If /I "%KeyRoot%" EQU "HKLM" (Set "KeyRoot=HKEY_LOCAL_MACHINE") If /I "%KeyRoot%" EQU "HKCC" (Set "KeyRoot=HKEY_CURRENT_CONFIG") If /I "%KeyRoot%" EQU "HKU" (Set "KeyRoot=HKEY_USERS") If /I "%ValueType%" EQU "REG_NONE" (Set "ValueType=hex^(0^)") If /I "%ValueType%" EQU "REG_RESOURCE_LIST" (Set "ValueType=hex^(8^)") If /I "%ValueType%" EQU "REG_RESOURCE_REQUIREMENTS_LIST" (Set "ValueType=hex^(a^)") If /I "%ValueType%" EQU "REG_FULL_RESOURCE_DESCRIPTOR" (Set "ValueType=hex^(9^)") ( Echo Windows Registry Editor Version 5.00 Echo [%KeyRoot%\%KeyName%] Echo "%ValueName%"=%ValueType%:%ValueData% )>"%RegFile%" REG.exe "Import" "%RegFile%" DEL /Q "%RegFile%" 2>NUL Goto :EOF
用法:
Call :Add_Special_Value "HKCU" "MyKeyName" "MyValueName" "REG_NONE" "Binary data (If any)"
哦,大家不要忘记尝试我的应用程序,并报告我的错误(如果有的话):)
源代码(VB.NET): http : //www.mediafire.com/download/1h3zbymfhnb3spt/REG2BAT.rar