7

我正在尝试通过 windows-7 上的网络适配器使用NetConLib.dll.

为此,应在所有其他网络适配器上禁用Internet 共享。

正常情况下。我可以迭代所有已安装的网络适配器并禁用它们的共享。 但是,有时当网络设备被拔出时,适配器会隐藏在 windows 中。但它的属性仍然存在于 Windows 注册表中。

我什至无法在控制面板中找到适配器。当然,不能使用NetConlib库对其进行迭代。


可能的情况。

  • 最简单的方法是使用 windows 命令禁用所有适配器上的 Internet 共享。不管他们的知名度如何。

    无论如何这可能吗?

  • 第二种解决方案是从隐藏状态恢复网络适配器,以便 NetConlib可以遍历它并禁用它。

    我试图在 Windows 注册表中找到适配器的属性unhide,但找不到任何东西

有什么解决办法吗?


@erm3nda。

感谢您提供信息丰富的答案。虽然它没有解决我面临的问题NetConlib

SC 配置正确关闭 ICS 服务。但是共享网络适配器继续被标记Shared1。因此,关闭ICS 服务似乎不会影响适配器的设置。

很有趣;当您尝试使用 Windows GUI ( Right click on adapter -> Properties -> Share) 共享另一个适配器时,会提示一条消息告诉您

“当前正在共享另一个适配器,您的新适配器将被共享”。你点击确定就完成了。

我整个下午都在挖掘整个互联网,看看是否有其他使用 CMD 命令的解决方案。

也许可能会有一个与命令共享适配器的方法。这样,windows 将处理禁用其他适配器。与使用 GUI 时类似。


1:Windows 告诉您当前正在共享哪个适配器Control Panel\Network and Internet\Network Connections)。

4

2 回答 2

6

可能的解决方案 1:完全禁用 ICS。 您可以停止 ICS 服务,这样所有连接都不会处于共享状态,也不会与NetConLib.dll. (不确定隐藏的,你必须尝试)。

您可以使用以下命令从命令行管理它: net start SharedAccessnet stop SharedAccess

此外,如果您需要从重新启动到禁用它,必须使用以下命令禁用服务: sc config SharedAccess start= disabled

注释和参考:

  • 执行sc config将显示“start= OPTIONS”等。= 下面的空格和选项是强制性的。您可以检查services.msc从 Run 或 cmd 运行的结果。
  • 执行net以显示选项。服务名称位于 ICS 服务的“服务名称”标签下的 services.msc 列表中。
  • netsh 路由不再在 Win7 上,因此您只能启动/停止/启用/禁用但不能为特定接口启用。必须手动设置... Win7 ICS下XP系统下这个不行
  • Sc Config命令来自我今天找到的这个很酷的文档

可能的解决方案2:删除ghost接口?我也尝试了适配器和接口进入注册表,没有看到任何关于 show/hid/ghost/enabled 或类似的东西。我还在这里搜索kb 314053以获取注册表配置。

我可以建议尝试可能的解决方案 1 :) 或直接删除隐藏/幽灵适配器。你可以通过两种方式做到这一点。Devcon 删除选项也将删除驱动程序。

find netcards 的基本用法devcon findall =net,您也可以devcon findall =net *ndis*列出所有 ndis 卡。删除的基本用法是devcon remove =net *ndis*删除所有 ndis 卡类型。

我也尝试启用/禁用命令,但我的网络接口列表没有任何变化。我删除了我自己的 wifi 卡来测试它:) 无论如何,我没有注意到连接面板中此类设备的“取消隐藏”功能的任何选项。

新编辑(太冗长了,对吧?)

我从这个超级用户帖子中找到了一个名为ics-manager的工具。 - 阅读答案#3 您可以直接从utapyngo 的 Git 项目页面下载。

它基于 .Net Framework 4。你必须下载并运行 build.bat 来编译这两个 exe(你也有 C# 源代码)。解决方案是仅获取已编译的 IcsManager.exe(命令行版本)和唯一需要的库 IcsManagerLibrary.dll。

该应用程序也在使用NETCONLib.dll,因此您可以使用它,或阅读源代码以查看您需要执行此操作并在您的开发中实现的正确功能。

如果您遇到 Ip 范围“192.168.137.1”的问题,您可以从注册表中永久设置,或运行netsh interface ipv4 set address name="YOUR-INTERFACE" source=static addr=192.168.2.1 mask=255.255.255.0. 启动使用波浪号或插入接口名称时,您会遇到丑陋的错误netsh interface(西班牙语默认以太网名称是“Conexión de áreal local”……开个玩笑)。

注意:您可以一次打包所有内容,首先使用call带有所需参数的 IcsManager.exe 的 Bat,然后稍后从同一批次启动 netsh configure 命令以进行完整配置。

评论:关于尝试覆盖共享连接时的提示,肯定是因为只能共享一个。我还看到,它们被配置为 Public 和 Home 来设置对,但我找不到注册表项在哪里...还从 reg 和使用 Diffs 进行一些导出,不走运。我陷入了差异并开始在 Google 上搜索“ICS C++ 和 C#”,然后找到了它。

额外:我把netsh它变成了一个蝙蝠,当插入以太网电缆时它会为 Windows 任务启动(这里是操作方法),以便与 Android 反向网络共享一起使用。正如你所看到的,我对你的问题太感兴趣了,因为它让我研究得更好,也学到了很多东西。

对不起我的英语不好。我不是。问候。

于 2013-10-30T04:33:37.827 回答
1

我发现通过进入设备管理器,您可以显示隐藏设备并尝试禁用适配器上的互联网共享。

希望这接近您的要求。祝你好运!

自动取款机

来源:http: //msdn.microsoft.com/en-us/library/windows/hardware/ff553955%28v=vs.85%29.aspx

于 2013-10-29T20:01:34.183 回答