1

我在 C# 应用程序中遇到了一个奇怪的问题。我的应用程序正在使用一些外部 .dll 文件(用于外部数据库访问的 MySQL 和用于错误报告的 NBug),它们存储在与主 .exe 相同的目录中。

安装我的应用程序并从开始菜单运行它后,它会加载并正常工作,这确认 mysql.dll 可以正常访问。但是,当应用程序崩溃时(由于未处理的异常),通常会弹出 NBUg 错误处理程序,但它不会。而是出现了 windows 样式的错误报告器。

在执行进一步调查后,如果我从程序文件以外的位置(例如在我的桌面上)运行应用程序,则 NBug 报告器加载正常。这让我相信这可能是一个权限问题。所以我尝试从 Program Files 以管理员身份运行该应用程序,然后 Nbug 报告器工作正常!

为什么会这样?让用户在每次启动时以管理员身份运行应用程序并不理想,也不理想让应用程序在启动时请求管理员权限。它不应该需要我这样做。

它似乎也只能在 Windows 10 上以这种方式工作。我在 Windows 7 和 XP 上运行了很多次,但它没有给我这个问题。Win 10 中是否有某种权限更改?但是为什么 Mysql.dll 能按预期工作,而 NBUg 却没有呢?

4

1 回答 1

2

好的,我已经解决了问题。显然,在 Windows 7/8/10 中,Microsoft 添加了 UAC,它需要用户授予程序权限以提升权限。在 XP 中,我相信这是自动化的,无需用户干预。

现在 NBug 需要这些提升权限的原因是因为在调用时,它会写入位于同一目录中的日志文件。因此,通过禁用日志记录,N Bug 不再需要提升权限。

这解决了我的问题。我发帖是因为这可能对其他人有帮助。

于 2015-10-14T08:49:58.447 回答