如何使用批量添加REG_NONE空值?

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