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», но это не помогло.
Решение
ICMP и raw-сокеты доступны только администраторам, начиная с Windows 2000.Вы не указали, что пытаетесь сделать, но вы можете попробовать пространство имен NetworkInformation для достижения своей цели: Информация о сети
Он включает в себя пинг класс для отправки эхо-запросов ICMP.