2012-07-11 89 views
6

可能重複:
Why does ping work without administrator privileges?如何在Windows上不需要管理權限?

MSDN文章TCP/IP原始套接字:

...重要的是要明白,有些類型的插座是很重要的SOCK_RAW可能會收到許多意外的數據報。例如,ping程序可以創建類型爲SOCK_RAW的套接字來發送ICMP迴應請求和接收響應....

這段話表明,爲了執行ICMP的ping,必須在Windows上使用原始套接字平臺。然而,同一篇文章也說:

注:要使用類型的插座SOCK_RAW需要管理員權限。運行使用原始套接字的Winsock應用程序的用戶必須是本地計算機上的管理員組的成員,否則原始套接字調用將失敗並顯示錯誤代碼爲WSAEACCES。在Windows Vista和更高版本上,創建套接字時會強制訪問原始套接字。在Windows的早期版本中,在其他套接字操作期間強制訪問原始套接字。

我當然不需要是管理員到ping其他主機。那麼ping.exe是否得到特殊待遇,它甚至使用原始套接字還是有其他我缺少的東西?

+3

也許'ping'不使用原始套接字? – 2012-07-11 18:29:03

+0

「這段話暗示爲了執行ICMP ping,必須在Windows平臺上使用原始套接字。」 - 不,不是的。 – tenfour 2012-07-11 18:50:18

+0

@tenfour你說得對,*表示*的含義太強。 – Tibor 2012-07-11 18:51:26

回答

5

由於Uwe評論,ping只是不使用原始套接字。它使用特定的API發送稱爲IcmpSendEchoIcmpSendEcho2的迴應請求。

您可以使用Dependency Walker上的c:\windows\system32\ping.exe親自查看。

+2

我期望真正的原因是歷史;在基於unix的系統上,ping通常要求用戶在特殊組中,或者更典型的是,ping程序有一個特殊位作爲該組運行(但內部不會允許普通用戶生成ping洪泛)。 Windows從早期的Windows版本繼承而沒有用戶帳戶或特權的概念,因此用戶可能期望ping應該像以前一樣工作。 – 2012-07-11 18:51:45

相關問題