Vbscript VBS-如何检查注册表数据中是否存在单词,然后将其删除?
我必须有一个vbs脚本,它可以删除字符串“vmhgfs”(coma很重要),如果它存在于a注册表数据中 注册表项是: “HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order” 注册表值为“ProviderOrder”(它是一个字符串值) 数据类似于“PICAClientNetwork、SNACPP、vmhgfs、RDPNP、LanmanWorkstation、webclient、PnSson”,但在不同的计算机上可能会有很大的不同 脚本必须检查此数据中是否存在字符串“vmhgfs”,如果存在,则将其删除。如果它不存在,就结束吧 我是VBS的新手,我已经开始编写以下脚本:Vbscript VBS-如何检查注册表数据中是否存在单词,然后将其删除?,vbscript,registry,registrykey,Vbscript,Registry,Registrykey,我必须有一个vbs脚本,它可以删除字符串“vmhgfs”(coma很重要),如果它存在于a注册表数据中 注册表项是: “HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order” 注册表值为“ProviderOrder”(它是一个字符串值) 数据类似于“PICAClientNetwork、SNACPP、vmhgfs、RDPNP、LanmanWorkstation、webclient、PnSson”,
Dim objShell, RegValue, RegData
RegValue = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder"
set objShell = CreateObject("Wscript.Shell")
RegData = objShell.RegRead(RegKey)
wscript.echo RegData
回音告诉我我走对了。。。但是没有足够的技能去进一步。。。
你能帮我完成它吗!非常感谢
编辑(在应用建议之前):
嗨,谢谢你们,我写了剧本:
Dim objShell, RegValue, RegData, NewRegData
RegValue = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder"
set objShell = CreateObject("Wscript.Shell")
RegData = objShell.RegRead(RegValue)
if Instr(RegData,",vmhgfs") > 0 then
NewRegData = Replace(RegData,",vmhgfs", "")
objshell.Regwrite RegValue ,NewRegData
Else IF Instr(RegData,"vmhgfs") > 0 then
NewRegData2 = Replace(RegData,"vmhgfs,", "")
objshell.Regwrite RegValue ,NewRegData2
End If
set objshell = nothing
第一个“IF”是管理“,VMHGFS”位于字符串中间的情况。好的,第二个“IF”用于管理“vmhgfs”位于字符串开头的情况
但是如果“vmhgfs”位于字符串的最末端,则这不起作用 我不明白,请帮帮我 这个怎么样if InStr(1,RegData,",vmhgfs") > 0 then
NewRegData = left(RegData,InStr(1,RegData,",vmhgfs")) & right(RegData,7+InStr(1,RegData,",vmhgfs"))
或者(根据Ansgar:)
然后您只需将它写回注册表我在这里使用正则表达式而不是
InStr
,因为后者也会(错误地)检测到、vmhgfsFOOBAR
之类的东西
Set sh = CreateObject("Wscript.Shell")
Set re = New RegExp
re.Global = True
val = "HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder"
re.Pattern = "(^|,)vmhgfs(,|$)"
data = re.Replace(sh.RegRead(val), ",")
re.Pattern = "^,|,$"
sh.RegWrite val, re.Replace(data, ""), "REG_SZ"
只需使用
Replace
而不是摆弄字符串操作:newRegData=Replace(RegData,”,vmhgfs“,”)
Set sh = CreateObject("Wscript.Shell")
Set re = New RegExp
re.Global = True
val = "HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder"
re.Pattern = "(^|,)vmhgfs(,|$)"
data = re.Replace(sh.RegRead(val), ",")
re.Pattern = "^,|,$"
sh.RegWrite val, re.Replace(data, ""), "REG_SZ"