Не удается запустить программу C# SharpPcap под учетной записью пользователя
Я пишу программу на C# для перехвата и разрешения пакетов с помощью SharpPcap и PacketDotNet . Он работает хорошо, когда я запускаю его в учетной записи администратора, но все равно появляется всплывающее окно, как показано ниже:
Вопрос означает «Вы хотите разрешить этому приложению вносить изменения в ваше устройство?
Однако, когда я вхожу в систему с учетной записью обычного пользователя и запускаю программу, она завершается ошибкой и перехватывает некоторые исключения:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> SharpPcap.PcapException: 慐正瑥敇䅴慤瑰牥慎敭㩳䌠畯摬❮⁴敧⁴牥潲敭獳条潦牥潲㘨㘲㤱㈴㈷)�岔ⶵ
at SharpPcap.LibPcap.LibPcapLiveDeviceList.GetDevices()
at SharpPcap.LibPcap.LibPcapLiveDeviceList.Refresh()
at SharpPcap.LibPcap.LibPcapLiveDeviceList..ctor()
at SharpPcap.LibPcap.LibPcapLiveDeviceList.get_Instance()
--- End of inner exception stack trace ---
Итак, я пытаюсь запустить его от имени администратора под учетной записью обычного пользователя. Я узнаю, что программа может работать без каких-либо исключений!
Я действительно запутался в этой ситуации. Я хочу знать, как я могу запустить его с обычной учетной записью пользователя, и он не перехватывает исключения!
1 ответ
Скорее всего, причина в Npcap «Режим только для администратора».
Из https://npcap.com/guide/index.html
Npcap поддерживает ограничение его использования администраторами в целях безопасности. Если Npcap установлен с установленным флажком «Ограничить доступ драйвера Npcap только для администраторов», только встроенные администраторы могут получить доступ к его функциям через пользовательское программное обеспечение (Nmap, Wireshark и т. д.). Это обеспечивает уровень ограничений, аналогичный требованию root-доступа для перехвата пакетов в Linux/UNIX.