在Windows注册表中创建二进制文件

时间:2018-11-29 15:27:28

标签: internet-explorer vbscript registry

我正在尝试在Windows注册表中创建一个二进制文件来更改IE11中的兼容性视图设置。我们有一些需要某些安全设置的Web应用程序,我想让用户更容易地更改设置。我不能只设置设置并锁定IE,因为每个应用程序的设置都不同。

我尝试了此解决方案,但是没有用。 Convert Hex String into Array and Write it to registry - VBSCript

我正在使用IE11运行Windows 7

这是我现在拥有的vbs文件。我没有收到错误,但也没有向注册表中写入任何内容。

strHexValue = "41,1f,00,00,53,08,ad,ba,01,00,00,00,38,00,00,00,01,00,00,00,01,00,00,00,0c,00,00,00,8c,96,3d,03,41,87,d4,01,01,00,00,00,0d,00,6e,00,61,00,76,00,69,00,6d,00,65,00,64,00,69,00,78,00,2e,00,63,00,6f,00,6d,00"

arrValue = Split(strHexValue, ",")
ReDim uBinary(UBound(arrValue))
For i = LBound(arrValue) To UBound(arrValue)
    uBinary(i) = CLng("&h" & arrValue(i))
Next

Const HKEY_CURRENT_USER = &H80000001
Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
strPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData"
strValueToWrite = "UserFilter"
intReturn = objRegistry.SetBinaryValue(HKEY_CURRENT_USER, strPath, strValueToWrite, uBinary)

1 个答案:

答案 0 :(得分:3)

仅供参考,您不需要管理权限即可编写此设置,因为它不是计算机设置。这只是一个用户设置,因此当前调用者也是当前用户。

第二,您也不需要HKEY_CURRENT_USER\中的文字字符串值strPath。 您已经使用了先前定义的名为HKEY_CURRENT_USER的常量作为.SetBinaryValue方法中的第一个参数。

如下更改strPath

strPath = "Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData"

其余代码看起来都不错,但是由于.SetBinaryValue不会在路径中隐式创建子项,因此需要确保要写入数据的项存在。为此,请在致电objRegistry.SetBinaryValue之前放置以下行。

objRegistry.CreateKey HKEY_CURRENT_USER, strPath 

如果密钥不存在,这将创建密钥,因此您的.SetBinaryValue呼叫可以按预期进行。

进行这些更改后,代码的最终版本应类似于以下内容。

strHexValue = "41,1f,00,00,53,08,ad,ba,01,00,00,00,38,00,00,00,01,00,00,00,01,00,00,00,0c,00,00,00,8c,96,3d,03,41,87,d4,01,01,00,00,00,0d,00,6e,00,61,00,76,00,69,00,6d,00,65,00,64,00,69,00,78,00,2e,00,63,00,6f,00,6d,00"

arrValue = Split(strHexValue, ",")
ReDim uBinary(UBound(arrValue))
For i = LBound(arrValue) To UBound(arrValue)
    uBinary(i) = CLng("&h" & arrValue(i))
Next

Const HKEY_CURRENT_USER = &H80000001
Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
strPath = "Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData"
strValueToWrite = "UserFilter"
objRegistry.CreateKey HKEY_CURRENT_USER, strPath
intReturn = objRegistry.SetBinaryValue(HKEY_CURRENT_USER, strPath, strValueToWrite, uBinary)