Почему ping работает без прав администратора?

как вы, возможно, знаете, невозможно создать сокеты RAW с помощью сокетов Windows без прав администратора. Проблема в том, что мне нужно отправлять сообщения ICMP, поэтому мне нужны сокеты RAW. Проблема: Моя программа должна работать без прав администратора.

Это привело меня к вопросу: как инструмент ping отправляет сообщения ICMP без прав администратора?


person dom0    schedule 07.10.2011    source источник
comment
Попробуйте сделать системный вызов ping [hostname] в своем приложении - я не думаю, что для этого нужны административные привилегии. Кроме того, что вы пробовали, и если это не удается, какое сообщение об ошибке?   -  person jefflunt    schedule 07.10.2011
comment
Я не уверен, что это работает без прав администратора. Раньше у меня пинг возвращался с каким-то сообщением об отказе в доступе в Vista. В моей Win7 нет, но у меня отключен UAC, так что моя текущая ситуация может быть нетипичной.   -  person Marcelo Cantos    schedule 07.10.2011
comment
@normalocity: мне не нужен пинг, мне нужны другие сообщения ICMP. Вот почему я хочу знать, как ping может отправлять ICMP без прав администратора... ;)   -  person dom0    schedule 07.10.2011
comment
@Marcelo Cantos: Ping окончательно работает без администратора   -  person dom0    schedule 07.10.2011
comment
Разве не для этого предназначен IcmpSendEcho()?   -  person Luke    schedule 07.10.2011
comment
@Luke: Ой, чувак... Не могу поверить, что только для этого существует специальная функция API. Но да, вы правы, так оно и должно работать. Хороший улов на самом деле.   -  person Damon    schedule 07.10.2011


Ответы (1)


Хотя ICMP использует сокеты RAW (для которых требуются права администратора в Windows 2000 и более поздних версиях), Microsoft обходит свои собственные правила безопасности, чтобы позволить своим ICMP API проходить. Таким образом, не используйте сокеты RAW напрямую для отправки собственных пинг-сообщений ICMP. Вместо этого используйте IcmpSendEcho() и связанные с ним функции.

person Remy Lebeau    schedule 07.10.2011
comment
@Remy Lebeau В каком модуле или оболочке реализован IcmpSendEcho? - person user1580348; 28.02.2015
comment
@user1580348: если вы прочитаете документацию, вы увидит, что это экспортированная функция в Icmp.dll (Win2K) и Iphlpapi.dll (XP и более поздние версии). - person Remy Lebeau; 28.02.2015