
Ich versuche, einem SIP-Client (vom Open-Source-Programm Linphone übernommen) ToS-Unterstützung (QoS) wie folgt hinzuzufügen:
retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos));
Aber in Windows 7 schlugen alle meine Versuche, ToS hinzuzufügen, fehl; es werden weiterhin Nullen gesetzt (wie in Wireshark zu sehen). Jemand sagte, es sei ein „Feature“ (sprich: Bug) in Windows.
Ich lese indiese Seitewie man eine QoS-Richtlinie erstellt, also habe ich manuell eine mithilfe der GUI erstellt:
Ich habe die folgenden Schritte versucht:
- Gehe zu
HKLM\System\CurrentControlSet\Services\Tcpip\QoS
- Erstellen Sie den
QoS
Schlüssel, falls er nicht existiert - Fügen Sie einen
REG-SZ
Parameter mit dem Namen hinzuDo not use NLA
und geben Sie ihm den Wert1
- Neustart
Es funktioniert wie gewünscht, aber jetzt ist meine Frage, wie ich die Erstellung einer solchen Richtlinie automatisieren kann (z. B. so, dass dies während einer Programminstallation erfolgen kann)?
[BEARBEITEN]
Mein Code ist reines C und die Verwendung von C#-Quellcode wäre etwas problematisch, da ich die minGW
Umgebung und Tools mit verwende ./configure && make && make install
.
Antwort1
Der ArtikelProgrammgesteuertes Aktualisieren lokaler Richtlinien in Windowsbeschreibt eine .NET-Bibliothek, die bei diesem Problem helfen kann.
Wenn Sie kein .net-Programm schreiben möchten, besteht die einfachste Lösung darin, ein AutoHotkeyMakro, möglicherweise zu einer EXE-Datei kompiliert, das die GUI-Manipulationen durchführt, die diese Gruppenrichtlinie erstellen.
Wenn Sie Windows 8 oder Server 2012 verwenden, ist die Konfiguration von QoS über PowerShell möglich:
Netzwerk-QoS-Cmdlets (Quality of Service) in Windows PowerShell.