internet-explorer - 在 Windows 注册表中创建二进制文件
问题描述
我正在尝试在 Windows 注册表中创建一个二进制文件来更改 IE11 中的兼容性视图设置。我们有一些需要某些安全设置的 Web 应用程序,我想让用户轻松更改设置。我不能只设置设置并锁定 IE,因为每个应用程序的设置都不同。
我已经尝试过这个解决方案,但没有奏效。将十六进制字符串转换为数组并将其写入注册表 - 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)
解决方案
仅供参考,您不需要管理权限来编写此设置,因为它不是机器设置。这只是一个用户设置,因此当前调用者也是当前用户。
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)
推荐阅读
- join - 具有来自 SAS 查找表的日期的子集数据
- autohotkey - autohotkey:如何让鼠标右键同时模仿自己和鼠标左键的功能?
- sql - 如何在 t-sql 中将新的根元素添加到 json 字符串
- three.js - THREE.js Line 在哪里与网格相交
- apache-nifi - 无法在 nifi 上添加扩展
- pandas - 使用 seaborn:如何在箱线图中显示分位数的值
- python - Mypy 抱怨 __setitem__ 签名
- python - pymysql insert into 报错scrapy
- synchronization - 如何使用 WebRTC 同步视频
- java - Spring Hibernate @GeneratedValue & @SequenceGenerator 没有得到正确的序列作为本机查询的查询