代码不起作用-SetDwordValue在VBS中不起作用

时间:2019-07-30 23:52:37

标签: vbscript

这是我的代码:

Const HKEY_CLASSES_ROOT= &H80000000
Const HKEY_CURRENT_USER= &H80000001
Const HKEY_LOCAL_MACHINE= &H80000002
Const HKEY_USERS= &H80000003
Set StdOut = WScript.StdOut
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO\{D218E173-A430-11E8-80D8-005056C00008}\0001"
strValueName = "venkat"
oReg.SetDWordValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, 800
oReg.GetDWordValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dval
WScript.Echo "SYSTEM\CurrentControlSet\Control\"  & " = " &  dval

我正在Windows 10中运行。

脚本中的

SetDWordValue无效。 GetDwordValue工作正常,正在获取数据。

尝试了所有可能性。即使是来自MSDN的代码也不起作用。我想使用vbs更改我的注册表项。

1 个答案:

答案 0 :(得分:0)

最可能的原因是您根本没有写该注册表项的权限。出现问题时,WMI注册表方法不会引发错误,因此您需要检查该方法的返回码,例如通过更改行

oReg.SetDWordValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, 800

rc = oReg.SetDWordValue(HKEY_LOCAL_MACHINE, strKeyPath, strValueName, 800)
WScript.Echo rc

返回码5表示您有权限错误。

要解决此问题,您可能只需要以“以管理员身份”运行脚本。