Просто хочу расширить ответ Зейна Али (в качестве ответа, поскольку у меня недостаточно репутационных баллов, чтобы комментировать) и, конечно же, поблагодарить Зейна за публикацию информации, которую они сделали, так как она очень помогла мне, когда я был пытаясь понять остальное.
Номер 8 немного сложнее, чем просто показать, что прокси отключен или нет. Он также устанавливает два других флажка в настройках.
Установка числа от 8 до «01» снимает флажок для включения прокси и снимает флажок «Автоматически определять настройки» и флажок для использования сценария.
Установка числа 8 на «0f», однако, разрешает все.
Для ясности, этот 8-й байт в основном устанавливает флаги. Насколько я могу судить, младший бит байта всегда равен «1». Второй наименее значимый бит - «1», если установлен флажок ручных настроек прокси. Третий младший значащий бит - «1», если установлен флажок для использования сценария и указан адрес для сценария. 4-й младший значащий бит - установить флажок «Автоматически определять настройки» (в основном, установка этих битов в 1 устанавливает флажок, а в 0 снимает флажок)
Я установил для него значение «03», которое включает только ручной прокси
Кроме того, «Другие вещи с неизвестной длиной» не являются правильными, поскольку длина известна. После этого упоминается список исключений для прокси, разделенный точкой с запятой. Длина этого списка - байт сразу после «proxyserver: port». Это, вместе с 3 '00' s заполнения, объясняет разницу в 4 байта, которая была упомянута как отличающаяся в зависимости от того, что еще у вас было.
0. keep this value
1. "00" placeholder
2. "00" placeholder
3. "00" placeholder
4. "xx" increments if changed
5. "xx" increments if 4. is "FF"
6. "00" placeholder
7. "00" placeholder
8. "03"=enable proxy, enable auto detect settings, auto script etc
9. "00" placeholder
10. "00" placeholder
11. "00" placeholder
12. "xx" length of "proxyserver:port"
13. "00" placeholder
14. "00" placeholder
15. "00" placeholder
"proxyserver:port"
"xx" length of proxy exception list
"00" placeholder
"00" placeholder
"00" placeholder
Proxy Exception list delimited by semi-colons (use "<local>" to exclude local addresses)
36 times "00"
Я потратил довольно много времени, пытаясь понять все это, так что, надеюсь, я что-то не пропустил.
Я создал пакетный скрипт, в котором вы можете указать прокси-сервер и порт, а также список исключений, и он автоматически создаст двоичный код и вставит его в реестр, где он должен быть (при условии, что восьмой байт "03").
Было бы тривиально изменить код так, чтобы он просто распечатывал двоичный файл, просто заменив всю строку "reg add" на "echo% data%".
Также обратите внимание, что сценарий, который я предоставил ниже, изменяет ключ HKLM, поскольку я использовал сценарий для настройки прокси-сервера на уровне всей машины в сочетании с объектами групповой политики. Вместо этого следует исправить это на HKCU.
Это можно найти здесь (если вы хорошо разбираетесь в пакетном режиме, не стесняйтесь делать сценарий лучше, поскольку я не очень хорошо с ним знаком и думаю, что он, вероятно, будет показан в коде): https://gist.github.com/hallzy/b7dfba5f71c0251f1139f8c531cd7817