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

4222
Maxim Shoustin

Я пытаюсь добавить поддержку 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.

3
Есть вопрос об установке реестра с помощью файла .reg или команды [reg add] (http://technet.microsoft.com/en-us/library/cc742162.aspx)? harrymc 10 лет назад 0
@harrymc вовсе нет, это не реестр, а групповая политика. IDK, если он хранится в реестре. Добавляя `Не использовать NLA` в QoS в реестре, я активирую только созданную политику. в противном случае это не работает Maxim Shoustin 10 лет назад 0

1 ответ на вопрос

1
harrymc

The article Programmatically updating local policy in Windows describes a .NET library that can assist with this problem.

If you do not wish to write a .net program, the simplest solution would be to create a AutoHotkey macro, possibly compiled to an .exe, that will do the GUI manipulations that create that group policy.

If you are using Windows 8 or Server 2012, the configuration of QoS is possible via PowerShell:
Network Quality of Service (QoS) Cmdlets in Windows PowerShell.

Спасибо за информацию, я нашел этот пост: http: //pete.akeo.ie/2011/03/porgramatics-setting-and-applying.html полезным. Тем не менее, я не нашел Gpedit.h на моем Windows 7. Звучит так, как будто он не работает на Windows 7. У меня есть SIP-видео приложение, которое отправляет видео с ToS 0 и код не работает. Я продолжаю расследовать. Спасибо Maxim Shoustin 10 лет назад 0
Я тоже видел этот пост и решил не рекомендовать его. Если вы занимаетесь программированием, исходный код библиотеки .NET, который я нашел, также доступен. harrymc 10 лет назад 0
Я занимаюсь программированием, но мой код - чистый C-lang, скомпилированный с make под minGL Maxim Shoustin 10 лет назад 0
Я никогда не использовал minGL, но сомневаюсь, что его интеграция в Windows так же хороша, как Visual Studio. Программа, которая вам нужна, достаточно проста, чтобы вы могли попробовать .NET. Microsoft Visual Studio Express для Windows Desktop является бесплатным. harrymc 10 лет назад 0
У меня есть VS8 и VS10, все в порядке, проблемы здесь, что плагин Мартина Идена, написанный на C #, и я компилирую код с помощью `gcc`, поэтому я искал способ его использовать. Спасибо Maxim Shoustin 10 лет назад 0
Есть много ресурсов о вызове C # из C и наоборот. Например, [Вызов C # из C] (http://stackoverflow.com/questions/4428267/calling-c-sharp-from-c). gcc более сложный, но один из методов изоляции - создание dll (возможно, статически связанных). harrymc 10 лет назад 0

Похожие вопросы