【问题标题】:Enable Internet Connection Sharing programmatically以编程方式启用 Internet 连接共享
【发布时间】:2012-09-06 07:17:56
【问题描述】:

我可以通过右键单击网络连接、打开“共享”选项卡、单击“允许其他网络用户通过此计算机的 Internet 连接进行连接”复选框并选择“家庭网络连接”来手动完成。

在解决这个问题时,我发现了多组 COM 接口:

1) Internet Connection Sharing and Internet Connection Firewall Interfaces 与 INetSharingManager

它的文档说:

Internet 连接防火墙可能已更改或在 后续版本。相反,请使用 Windows 防火墙 API。

此外,INetSharingConfiguration.EnableSharing 方法看起来并不对应上述过程,因为它的参数不包括“家庭网络连接”。

2)Windows Firewall for Windows XP with SP2 Interfaces

它的文档进一步引用了我们:

对于 Windows Vista 及更高版本,使用高级 Windows 防火墙 推荐使用安全 API。

3)Windows Firewall with Advanced Security API

只有以下接口:INetFwPolicy2, INetFwProduct, INetFwProducts, INetFwRule, INetFwRule2, INetFwRule3, INetFwRules, INetFwServiceRestriction。看起来不太有希望。

现在我迷路了。我应该在 Windows 7 上使用哪个 API?

【问题讨论】:

标签: networking windows-7 routing nat


【解决方案1】:

乌塔宾戈

你最终的选择是什么?

http://social.msdn.microsoft.com/Forums/en-tw/windowssdk/thread/19f7581d-29c7-4109-85d4-6a79ee4d1577

“我找到了解决方案。您必须在要连接的适配器上启用公共接口,并在您希望能够用于网络的适配器的专用接口上启用共享。”

【讨论】:

  • 答案字段用于回答而不是提问。
  • 谢谢。现在我看到INetSharingConfiguration.EnableSharing 是正确的方法,因为INetSharingConfiguration 对应于单个连接。但请适当地格式化您的答案。您可以使用“Blockquote”按钮进行引用。
  • 此解决方案不再适用于 Win 10 周年更新 - 访问冲突(当应用调用 DisableSharing 或 EnableSharing 时,hnetcfg.dll 中的空指针被取消引用)
【解决方案2】:

如果调用是由 64 位操作系统上的 32 位程序进行的,则仅在 Win 10 周年更新上发生访问冲突。它适用于 32 位操作系统上的 32 位程序或 64 位操作系统上的 64 位程序

【讨论】:

  • 太棒了,感谢您的提示,一旦我开始使用 64 位应用程序的 API,现在就可以正常工作了。
猜你喜欢
  • 2011-06-27
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多