可能重复:
为什么 ping 在没有管理员权限的情况下工作?
来自关于 TCP/IP 原始套接字的MSDN文章:
...重要的是要了解某些 SOCK_RAW 类型的套接字可能会收到许多意外的数据报。例如,一个 PING 程序可能会创建一个 SOCK_RAW 类型的套接字来发送 ICMP 回显请求并接收响应......
这段话表明,为了执行 ICMP ping,必须在 Windows 平台上使用原始套接字。但是,同一篇文章也说:
注意: 要使用 SOCK_RAW 类型的套接字需要管理权限。运行使用原始套接字的 Winsock 应用程序的用户必须是本地计算机上管理员组的成员,否则原始套接字调用将失败并返回错误代码 WSAEACCES。在 Windows Vista 和更高版本上,对原始套接字的访问是在创建套接字时强制执行的。在早期版本的 Windows 中,对原始套接字的访问是在其他套接字操作期间强制执行的。
我当然不需要成为ping
其他主机的管理员。那么是否ping.exe
得到特殊处理,它甚至使用原始套接字还是我还缺少其他东西?