0

我必须有一个 vbs 脚本,如果它存在于注册表数据中,它可以删除字符串“,vmhgfs”(逗号很重要)。

注册表项是:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order”

注册表值为“ProviderOrder”(它是一个字符串值)

数据类似于“PICAClientNetwork,SnacNp,vmhgfs,RDPNP,LanmanWorkstation,webclient,PnSson”,但从一台计算机到另一台计算机可能会有很大不同。

该脚本必须检查该数据中是否存在字符串“,vmhgfs”,如果存在,则将其删除。如果它不存在,就结束。

我是 VBS 的新手,我已经开始编写这个脚本:

    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”在字符串中间的情况。OK 第二个“IF”是管理“vmhgfs”在字符串开头的情况

但是如果 ",vmhgfs" 位于字符串的最后,这将不起作用!!!

我不明白,请帮助!

4

2 回答 2

0

这个怎么样?

if InStr(1,RegData,",vmhgfs") > 0 then
NewRegData = left(RegData,InStr(1,RegData,",vmhgfs")) & right(RegData,7+InStr(1,RegData,",vmhgfs"))

或(根据 Ansgar :))

if InStr(1,RegData,",vmhgfs") > 0 then
newRegData = Replace(RegData, ",vmhgfs", "")

然后你只需要把它写回注册表

于 2013-09-27T10:40:02.847 回答
0

我会使用正则表达式而不是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"
于 2013-09-27T12:00:07.913 回答