我正在尝试向 SIP 客户端(取自开源 Linphone)添加 ToS(QoS)支持,如下所示:
retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));
但在 Windows 7 中,我添加 ToS 的所有尝试都失败了;它继续设置零(如 Wireshark 中所示)。有人说这是 Windows 中的“功能”(阅读错误)。
我读这一页如何创建 QoS 策略,因此我使用 GUI 手动创建了一个:
我尝试了以下步骤:
- 去
HKLM\System\CurrentControlSet\Services\Tcpip\QoS
QoS
如果密钥不存在则创建- 添加一个
REG-SZ
名为的参数Do not use NLA
并赋予其值1
- 重启
它可以按预期工作,但现在我的问题是如何自动创建这样的策略(例如,以便可以在程序安装期间完成)?
[编辑]
minGW
我的代码是纯 C 语言的,由于我使用的环境和工具,使用 C# 源代码会有点问题./configure && make && make install
。
答案1
文章在 Windows 中以编程方式更新本地策略描述了一个可以帮助解决此问题的.NET 库。
如果你不想编写.net程序,最简单的解决方案就是创建一个 自动热键宏,可能编译为 .exe,它将执行创建该组策略的 GUI 操作。
如果您使用的是 Windows 8 或 Server 2012,则可以通过 PowerShell 配置 QoS:
Windows PowerShell 中的网络服务质量 (QoS) Cmdlet。