为什么ping不需要Windows上的管理权限?

时间:2012-07-11 18:26:36

标签: windows ping raw-sockets

  

可能重复:
  Why does ping work without administrator privileges?

来自关于TCP / IP原始套接字的MSDN文章:

  

...重要的是要了解一些SOCK_RAW类型的套接字可能会收到许多意外的数据报。例如,PING程序可以创建SOCK_RAW类型的套接字来发送ICMP回应请求并接收响应....

这篇文章建议,为了执行ICMP ping,必须在Windows平台上使用原始套接字。但是,同一篇文章也说:

  

注意:要使用SOCK_RAW类型的套接字,需要具有管理权限。运行使用原始套接字的Winsock应用程序的用户必须是本地计算机上Administrators组的成员,否则原始套接字调用将失败,错误代码为WSAEACCES。在Windows Vista及更高版本中,在创建套接字时强制访问原始套接字。在早期版本的Windows中,在其他套接字操作期间强制访问原始套接字。

我当然不需要成为ping其他主机的管理员。 ping.exe获得特殊待遇,甚至使用原始套接字还是我还缺少其他东西?

1 个答案:

答案 0 :(得分:5)

正如Uwe评论的那样,ping只是不使用原始套接字。它使用特定的API发送名为IcmpSendEchoIcmpSendEcho2的回应请求。

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