c# - 似乎是 .dll 权限 C# 的问题

标签 c# mysql windows dll nbug

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

安装我的应用程序并从开始菜单运行它后,它加载并工作正常,这确认 mysql.dll 正在正常访问。但是,当应用程序崩溃时(由于未处理的异常),通常会弹出 NBug 错误处理程序,但它不会。而是显示 Windows 风格的错误报告程序。

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

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

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

最佳答案

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

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

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

关于c# - 似乎是 .dll 权限 C# 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088807/

相关文章:

php - MySQL 文件下载速度限制

c - Data::Dumper 中是否有相当于 Perls 的 Dumper() 方法的 C 语言?

c# - 如何在VS2010中的每个方法中设置断点

php - 为什么 not null 语句在我的 sql 查询中不起作用?

php - DB 中存储的时间减去 2 周

ruby - Openshift 和 net-ssh 不兼容? (2.9.3-beta1 对比 2.9.2)

c++ - qmake 为 win32-g++ 平台生成的 Makefile 包含 unix 命令

c# - 尝试计算两个角度之间的差异 (atan2)

c# - 通过动态属性将两个通用列表相交

c# - 使用 Microsoft.AspNetCore.Html.HtmlString