使用 Qt 在 Windows 中以编程方式更改网络适配器名称
Posted
技术标签:
【中文标题】使用 Qt 在 Windows 中以编程方式更改网络适配器名称【英文标题】:Changing the Network adapter name Programmatically in windows with Qt 【发布时间】:2018-04-21 19:18:10 【问题描述】:我知道可以使用控制台中的 netsh 命令更改 Windows 中的网络适配器。但我需要使用 C++ 在 Qt 中执行此操作。我曾尝试使用 QProcess 调用 netsh 但命令提示符需要管理员权限。我的适配器名称中也有空格,这使得它也不容易运行。 Qt 中是否有任何库能够在不使用 QProcess 并在其中调用 windows 命令的情况下更改网络适配器名称?
更新 1: 当我以管理员权限运行程序并将 \" 设置为在我的字符串中包含 " 时,我可以使用 QProcess 和 netsh 命令更改适配器名称。
QProcess p;
QString pi_network = "original adapter name";
p.start("netsh interface set interface name = \""+pi_network+"\" newname = \"MyAdapter\"");
【问题讨论】:
使用 PowerShell,您需要以管理员身份运行。Get-NetAdapter -Name 'LAN-Verbindung 21' | Rename-NetAdapter -NewName Renamed -WhatIf
您的应用程序是否具有管理员权限 - 所以问题只是以正确的权限调用 netsh?无法从仅具有用户权限的应用程序调用此命令。
是的,有了管理员权限,我解决了这个问题。对我来说,使用 QProcess 来实现这样的功能就像一种解决方法,但无论如何它都能完成这项工作。如上所述,我使用了 netsh。谢谢你们。
在 SO 上回答您自己的问题非常好,因此您不妨提交您的发现作为对这个问题的回答。
【参考方案1】:
我会将其作为答案发布,因为它可能会对某人有所帮助(正如 MrEricSir 在 cmets 中所说)。
您可以使用 netsh 命令,但请注意,您应该在 windows 中以管理员权限运行您的程序。
QProcess p;
QString pi_network = "original adapter name";
p.start("netsh interface set interface name = \""+pi_network+"\" newname = \"new network adapter name\"");
p.waitForFinished();
p.close();
【讨论】:
以上是关于使用 Qt 在 Windows 中以编程方式更改网络适配器名称的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 8.1 中以编程方式更改当前的 Windows 主题?
如何在 C# 中以编程方式将 Windows 服务的启动类型更改为禁用
如何在 Windows 中以编程方式强制重启/重新加载 Playback 设备?