如何通过CLI在Windows 7上创建基于策略的QoS?


3

我正在尝试将ToS(QoS)支持添加到SIP客户端(来自开源Linphone):

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

但是在Windows 7中,我添加ToS的所有尝试都失败了。它继续设置零(如Wireshark所示)。有人说这是Windows中的“功能”(阅读错误)。

我在此页面中阅读了如何创建QoS策略,因此我使用GUI手动创建了一个:

策略编辑器的屏幕快照,显示了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


有关通过.reg文件或reg add命令设置注册表的问题吗?
harrymc

@harrymc根本不是,不是注册表,而是组策略。IDK(如果将其存储到注册表中)。通过添加Do not use NLA到注册表中的QoS,我仅激活创建的策略。否则它不工作
马克西姆Shoustin

Answers:


1

在Windows中以编程方式更新本地策略的文章介绍了可以解决此问题的.NET库。

如果您不希望编写.net程序,则最简单的解决方案是创建一个 AutoHotkey宏(可能编译为.exe),该宏将执行创建该组策略的GUI操作。

如果您使用的是Windows 8或Server 2012,则可以通过PowerShell来配置QoS:
Windows PowerShell中的网络服务质量(QoS)Cmdlet


感谢您提供信息,我发现该帖子:pete.akeo.ie/2011/03/porgramatically-setting-and-applying.html有用。但是,我在Windows 7上找不到Gpedit.h。听起来好像它无法在Windows 7上运行。我继续调查。谢谢
Maxim Shoustin

我也看到了该帖子,因此决定不推荐它。如果您正在编程,我发现的.NET库的源代码也可用。
harrymc

林成节目,但我的代码是纯C编译郎用make minGL下
马克西姆Shoustin

我从未使用过minGL,但我怀疑它与Windows的集成是否与Visual Studio一样好。您所需的程序非常简单,可以考虑尝试.NET。适用于Windows桌面的Microsoft Visual Studio Express是免费的。
harrymc

我有VS8和VS10,没问题,这是Martin Eden用C#编写的插件的问题,我使用编译代码gcc,所以我在寻找使用它的方法。谢谢
Maxim Shoustin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.