2012-09-06 78 views
3

我可以通過右鍵單擊網絡連接,打開「共享」選項卡,單擊「允許其他網絡用戶通過此計算機的Internet連接進行連接」複選框並選擇「家庭網絡連接「。以編程方式啓用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?

+0

您是否能夠共享您最終使用的腳本的Github主旨? –

+1

@MarkKCowan:我終於寫道:https://github.com/utapyngo/icsmanager – utapyngo

回答

2

utapyngo

哪一個是您的最終選擇?

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

「我能找到解決方案。你必須讓你連接到的適配器上的公共接口和專用接口爲您希望能夠使用的適配器上啓用共享網絡。」

+2

答案字段是答案而不是問題。 – johannes

+1

謝謝。現在我看到「INetSharingConfiguration.EnableSharing」是正確的方法,因爲「INetSharingConfiguration」對應於單個連接。但請妥善格式化您的答案。您可以使用「Blockquote」按鈕進行報價。 – utapyngo

+0

此解決方案不再適用於Win 10 Anniversary Update - 訪問衝突(當應用程序調用DisableSharing或EnableSharing時,空指針在hnetcfg.dll中取消引用) – vond

1

如果通過64位操作系統上的32位程序進行調用,則訪問衝突僅發生在Win 10 Anniversary Update上。它適用於32位操作系統上的32位程序或64位操作系統上的64位程序

+0

真棒,感謝您的提示,現在一旦我開始使用來自64位應用程序的API。 – vond

相關問題