我在我的C#应用程序中遇到了一个奇怪的问题。我的应用程序使用一些外部.dll文件(MySQL用于外部数据库访问,NBug用于错误报告),这些文件存储在与主.exe相同的目录中。
在安装了我的应用程序,并从开始菜单运行它,它加载和工作良好,这证实了mysql.dll被访问良好。但是,当应用程序崩溃时(由于未处理的异常),通常会弹出NBug错误处理程序,但它不会弹出。相反,会出现windows样式的错误报告。
在进行了进一步的调查之后,如果我从程序文件以外的位置运行应用程序,比如在我的桌面上运行,NBug报告程序就会加载良好。这使我相信这可能是一个权限问题。所以我试着以程序文件管理员的身份运行这个应用程序,然后Nbug报告程序运行得很好!
它为什么这样做?让用户在每次启动应用程序时都以管理员身份运行应用程序并不理想,在启动时使应用程序请求管理权限也不是理想的做法。它不应该需要我这样做。
它似乎也只适用于Windows 10。我在windows 7和XP上运行了很多次,它并没有给我这个问题。Win 10中是否有某种许可变更?但是为什么Mysql.dll按预期工作,而不是NBug工作呢?
发布于 2015-10-14 08:49:58
好的,我已经解决了这个问题。显然,在Windows 7/8/10中,微软添加了UAC,这需要用户给予程序权限以提高权限。在XP中,我相信这是在没有用户干预的情况下自动实现的。
现在,NBug需要这些提升的权限的原因是,当调用时,它会写入位于同一个目录中的日志文件。因此,通过禁用日志记录,NBug不再需要提升的权限。
这解决了我的问题。我在发帖,因为这可能会对其他人有帮助。
https://stackoverflow.com/questions/33088807
复制相似问题