【问题标题】:How to re-enable a disabled network connection in Windows XP using C++?如何使用 C++ 在 Windows XP 中重新启用禁用的网络连接?
【发布时间】:2016-05-07 09:10:49
【问题描述】:

我找到了this article at SO,它告诉我们如何使用 SetupAPI 启用/禁用网络适配器。到目前为止,这工作正常。问题是我无法找到一种方法来获取已在 Windows XP 中禁用的网络连接(适配器)的设备索引。

我有:

  • GUID 列表(来自 HKLM\SOFTWARE\Microsoft\Windows NT\Netcards)
  • Win32_NetworkAadapter 中受 Windows XP 支持的所有内容

我试过没有成功:

  • GetIfTable() - 禁用的适配器不在表中
  • XP 不支持 Win32_NetworkAdapter::InterfaceIndex
  • XP 不支持 Win32_NetworkAdapter::Enable()/Disable()

我还能做些什么来获取设备索引或重新启用已禁用的网络适配器?

【问题讨论】:

  • 您是否浏览过 MSDN 上记录的 SetupAPI?您还执行了哪些其他 Google 搜索?
  • 不幸的是,我对 SetupAPI 不是很熟悉,而且文档非常庞大。我搜索了很多,但大多数建议是 .NET 或脚本,或使用 XP 中不可用的功能。目前我正在考虑使用 SetupAPI 来枚举所有网络接口并找到与 Win32_NetowrkAdapert 中的信息匹配的内容。有什么建议吗?。
  • 我刚刚搜索了“setupapi 获取网络适配器索引”,第一个结果是关于名为 how-to-get-network-adapter-index 的 SO。接受的答案使用 .Net NetworkInterface 和 C#。 XP 都支持 .NET 和 C#,对吧?
  • 如标题中所述,我的问题是关于在 C++ 中执行此操作,而不是 C# 或 C# .NET。
  • C++ 可用于调用 .NET API,使用托管扩展。

标签: c++ windows winapi wmi


【解决方案1】:

根据我构建Network Connection Guard tool 的经验,最简单的方法是使用netsh 命令,而不是API。我的示例是 C#,所以我使用了 System.Diagnostics.Process,但在您的情况下,我相信您可以使用 ShellExecute()

另请参阅 SO Programmatically disable/enable network interface 上的此答案

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多