我在 C# 应用程序中遇到了一个奇怪的问题。我的应用程序正在使用一些外部 .dll 文件(用于外部数据库访问的 MySQL 和用于错误报告的 NBug),它们存储在与主 .exe 相同的目录中。
安装我的应用程序并从开始菜单运行它后,它会加载并正常工作,这确认 mysql.dll 可以正常访问。但是,当应用程序崩溃时(由于未处理的异常),通常会弹出 NBUg 错误处理程序,但它不会。而是出现了 windows 样式的错误报告器。
在执行进一步调查后,如果我从程序文件以外的位置(例如在我的桌面上)运行应用程序,则 NBug 报告器加载正常。这让我相信这可能是一个权限问题。所以我尝试从 Program Files 以管理员身份运行该应用程序,然后 Nbug 报告器工作正常!
为什么会这样?让用户在每次启动时以管理员身份运行应用程序并不理想,也不理想让应用程序在启动时请求管理员权限。它不应该需要我这样做。
它似乎也只能在 Windows 10 上以这种方式工作。我在 Windows 7 和 XP 上运行了很多次,但它没有给我这个问题。Win 10 中是否有某种权限更改?但是为什么 Mysql.dll 能按预期工作,而 NBUg 却没有呢?