Как создать QoS на основе политик в Windows 7 через CLI?

Как создать QoS на основе политик в Windows 7 через CLI?

Я пытаюсь добавить поддержку ToS (QoS) в SIP-клиент (взятый из Linphone с открытым исходным кодом) следующим образом:

retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));

Но в Windows 7 все мои попытки добавить ToS провалились; он продолжает устанавливать нули (как видно в Wireshark). Кто-то сказал, что это «фича» (читай баг) в Windows.

Я читал вэта страницакак создать политику QoS, поэтому я создал ее вручную с помощью графического интерфейса:

Скриншот редактора политик, показывающий конфигурацию QoS

Я попробовал следующие шаги:

  1. Идти кHKLM\System\CurrentControlSet\Services\Tcpip\QoS
  2. Создайте QoSключ, если его нет
  3. Добавьте REG-SZпараметр с именем Do not use NLAи присвойте ему значение1
  4. Перезагрузить

Все работает так, как и хотелось бы, но теперь у меня возник вопрос: как автоматизировать создание такой политики (например, чтобы это можно было сделать во время установки программы)?

[РЕДАКТИРОВАТЬ]

Мой код написан на чистом C, и использование исходного кода C# будет немного проблематичным, поскольку я использую minGWсреду и инструменты с ./configure && make && make install.

решение1

СтатьяПрограммное обновление локальной политики в Windowsописывает библиотеку .NET, которая может помочь решить эту проблему.

Если вы не хотите писать .net-программу, самым простым решением будет создать AutoHotkeyмакрос, возможно, скомпилированный в .exe, который будет выполнять манипуляции с графическим интерфейсом, создающие эту групповую политику.

Если вы используете Windows 8 или Server 2012, настройка QoS возможна через PowerShell:
Командлеты сетевого качества обслуживания (QoS) в Windows PowerShell.

Связанный контент