
标题: [注册表类] 批处理如何添加注册表数据hex(0):? [打印本页]
作者: crist 时间: 2011-10-8 15:15 标题: 批处理如何添加注册表数据hex(0):?
本帖最后由 pcl_test 于 2016-8-1 19:56 编辑
注册表里有这样一条:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids]
"ShockwaveFlash.ShockwaveFlash"=hex(0):
我用批处理- REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids" /V "ShockwaveFlash.ShockwaveFlash" /T "REG_NONE" /D "" /F
复制代码
结果注册表变成了
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids]
"ShockwaveFlash.ShockwaveFlash"=hex(0):00,00
请问应该怎么写批处理才能输入正确的注册表键值?
作者: Hello123World 时间: 2011-10-8 16:11
- REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids" /V "ShockwaveFlash.ShockwaveFlash" /T "REG_NONE" /F
复制代码
去掉/D "" 试试
作者: applba 时间: 2011-10-8 23:16
本帖最后由 applba 于 2011-10-8 23:20 编辑
reg query一下试试,看看是什么类型的键值……
还有reg add你都不会用,你用个双引号是什么意思,空字符串和数字0不是一回事啊……
添加16进制的0用0x0就好了,下面来个例子:
reg add "HKLM\SOFTWARE\Tencent\QQPCMgr" /v "FR" /t REG_DWORD /d 0x0 /f
作者: crist 时间: 2011-10-9 10:50
回复 2# Hello123World
你这个代码我自己也试过,运行后ShockwaveFlash.ShockwaveFlash的数据是“00 00”,但是正确应该是“(长度为零的二进制值)”。
作者: crist 时间: 2011-10-9 10:55
回复 3# applba
首先,从注册表的内容看我要添加的不是“16进制的0”,而是“(长度为零的二进制值)”
按照你所说的代码运行后完全跟注册表的正确数据不符。
作者: Hello123World 时间: 2011-10-9 11:29
回复 5# crist
hex 的确是十六进制的意思……
试试这句- REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids" /V "ShockwaveFlash.ShockwaveFlash" /T "REG_NONE" /d 0x0 /F
复制代码
作者: crist 时间: 2011-10-9 15:15
回复 6# Hello123World
建议你自己测试一下你的代码
我自己测试的结果是
作者: Hello123World 时间: 2011-10-9 16:05
是不是值的问题,长度为零的二进制,怎么会有hex这样的字符串呢?
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids 项QQPlayer.swf键 的值是 0000
会不会是你搞错键值类型了,不是reg_none类型
作者: crist 时间: 2011-10-16 11:30
回复 8# Hello123World
注册表截图如下:
作者: powerbat 时间: 2011-10-16 14:16
原始值应该是REG_BINARY类型的,你们都在那里想当然。。。修改之前最好 reg query 查看一下类型。- REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.swf\OpenWithProgids" /V "ShockwaveFlash.ShockwaveFlash" /T REG_BINARY /D 0 /F
复制代码
作者: applba 时间: 2011-10-20 17:37
回复 10# powerbat
你用8进制、16进制或10进制的数字没有区别,反正cmd.exe会自行转换。
作者: powerbat 时间: 2011-10-20 21:02
注册表中的hex与cmd.exe有什么关系。。。
作者: lovekix 时间: 2019-8-25 15:18
回复 9# crist
弄好了吗? 我现在也碰到这个 问题了 求大神解答啊
作者: geyee 时间: 2020-8-31 16:51
似乎纯bat批处理下只能导入文件,见https://stackoverflow.com/questions/25414510/how-to-add-a-reg-none-empty-value-using-batch/25474206。zero-length binary value(数值是零的二进制位值)且类型为REG_NONE,是难点。- echo Windows Registry Editor Version 5.00>tmp.reg
- echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.SWF\OpenWithProgids]>>tmp.reg
- echo "ShockwaveFlash.ShockwaveFlash"=hex(0):>>tmp.reg
- reg import tmp.reg
复制代码
用PowerShell测试成功,如下- [Microsoft.Win32.Registry]::SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.SWF\OpenWithProgids","ShockwaveFlash.ShockwaveFlash",[byte[]]@(),-1)
复制代码
参考自https://social.technet.microsoft.com/Forums/office/en-US/c3a79b17-e0d3-481c-9e8a-90e9e6d9d867/set-registry-value-to-0
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |