我正在尝试在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)
答案 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)