Между прочим, вам не нужны административные привилегии для написания этого параметра, потому что это не параметр компьютера.Это просто пользовательская настройка, поэтому текущий инициатор также является текущим пользователем.
Во-вторых, вам также не нужно буквальное строковое значение 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)