【问题标题】:Changing the Network adapter name Programmatically in windows with Qt使用 Qt 在 Windows 中以编程方式更改网络适配器名称
【发布时间】: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 上回答您自己的问题非常好,因此您不妨提交您的发现作为对这个问题的回答。

标签: c++ windows qt powershell network-programming


【解决方案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();

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2014-09-16
    • 2010-10-15
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多