我在C#应用中遇到了一个奇怪的问题。我的应用程序正在使用一些外部.dll文件(MySQL用于外部数据库访问,NBug用于错误报告),这些文件存储在与主.exe相同的目录中。
安装我的应用程序并从开始菜单运行它后,它加载并正常工作,这确认mysql.dll被正常访问。但是,当应用程序崩溃时(由于未处理的异常),通常会弹出NBug错误处理程序,但事实并非如此。相反,windows风格的错误记者出现了。
在进行进一步调查后,如果我从程序文件以外的位置运行应用程序,NBug报告器加载正常,就像在我的桌面上一样。这让我相信它可能是一个权限问题。所以我尝试从Program Files以管理员身份运行应用程序,然后Nbug记者工作正常!
为什么这样做?每次启动应用程序时,让用户以管理员身份运行应用程序并不理想,在启动时使应用程序请求管理员权限也不理想。它不应该让我这样做。
它似乎也只能在Windows 10上以这种方式工作。我在Windows 7和XP上运行了很多次,并没有给我这个问题。 Win 10中是否有某种权限更改?但是为什么Mysql.dll按预期工作,而不是NBug呢?
答案 0 :(得分:2)
好的,我已经找到了问题所在。显然在Windows 7/8/10中,Microsoft添加了UAC,需要用户授予程序权限以提升权限。在XP中,我相信这是在没有用户干预的情况下实现的。
现在NBug需要这些提升权限的原因是因为在调用时,它会写入位于同一目录中的日志文件。因此,通过禁用日志记录,NBug不再需要提升权限。
这解决了我的问题。我发帖,因为这可能对其他人有所帮助。