ICMP в C#, SocketException - запрещено правами доступа

Я пытаюсь заставить найденный здесь код ICMP работать. Однако на этой линии:

Socket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork,
                                       System.Net.Sockets.SocketType.Raw,
                                       System.Net.Sockets.ProtocolType.Icmp);

Я получаю SocketException: "Была сделана попытка доступа к сокету способом, запрещенным его правами доступа" (собственный код ошибки: 10013)

Работа в режиме администратора - одно (плохое) решение, но, поскольку я хочу, чтобы моя программа работала на уровне пользователя, что бы вы предложили? Другие подходы ICMP также приветствуются.

Я пытался поиграть с настройками безопасности "ClickOnce", которые не помогли.

1 ответ

Решение

ICMP и необработанные сокеты доступны только для администраторов Windows 2000. Вы не указали, что пытаетесь сделать, но вы можете попробовать пространство имен NetworkInformation для достижения вашей цели: NetworkInformation

Он включает класс Ping для отправки эхо-запросов ICMP.

Другие вопросы по тегам