Кажется, проблема с разрешениями.dll C#

Я столкнулся со странной проблемой в моем приложении C#. Мое приложение использует некоторые внешние файлы.dll (MySQL для доступа к внешней базе данных и NBug для отчетов об ошибках), которые хранятся в том же каталоге, что и основной.exe.

После установки моего приложения и запуска его из меню "Пуск" оно загружается и работает нормально, что подтверждает, что к mysql.dll обращаются нормально. Однако, когда происходит сбой приложения (из-за необработанного исключения), обычно всплывает обработчик ошибок NBug, но это не так. Скорее всего, появляется сообщение об ошибке в стиле Windows.

После выполнения дальнейших расследований репортер NBug загружается нормально, если я запускаю приложение из папки, отличной от файлов Программы, как на моем рабочем столе. Это привело меня к мысли, что это может быть проблема с разрешениями. Поэтому я попытался запустить приложение в качестве администратора из Program Files, и тогда репортер Nbug работает нормально!

Почему так себя ведет? Не будет идеальным, чтобы пользователь запускал приложение от имени администратора при каждом его запуске, а также не было бы идеальным, чтобы приложение запрашивало разрешения администратора при запуске. Это не должно нуждаться во мне, чтобы сделать это.

Также кажется, что это работает только на Windows 10. Я запускал его много раз на Windows 7 и XP, и это не дает мне этой проблемы. Есть ли какие-то изменения разрешений в Win 10? Но почему Mysql.dll работает как положено, а не NBug?

1 ответ

Решение

Хорошо, я понял проблему. Очевидно, в Windows 7/8/10 Microsoft добавила UAC, который требует, чтобы пользователь дал разрешение программе для повышения разрешений. В XP я считаю, что это было автоматизировано без вмешательства пользователя.

Теперь причина, по которой NBug требовались эти повышенные разрешения, заключается в том, что при вызове он будет записывать в файл журнала, расположенный в том же каталоге. Таким образом, отключив ведение журнала, NBug больше не нуждается в повышенных разрешениях.

Это решает мою проблему. Я пишу, так как это может быть полезно для других.

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