在不右键点击并选择“以管理员身份运行”时运行WPF应用程序的性能问题

3
我有一个WPF应用程序,将在安装了Windows 10的平板电脑上使用。在我的开发环境中,该应用程序运行非常快。然而,如果我在没有管理员权限的平板电脑上运行应用程序,应用程序响应非常慢:所有动画都很慢,滚动不流畅,触摸问题也很明显(无法移动光标)。如果应用程序具有管理员权限,则一切正常工作。
我尝试禁用日志,尝试降低FPS,但似乎没有任何帮助。我的应用程序连接到SQLite数据库,但即使不访问数据库,它也非常慢。没有其他需要管理员权限的连接。
可能的问题是什么?
编辑:在我的开发环境中,如果没有管理员权限,该应用程序也会运行得更慢。我使用管理员权限运行VS2015,因此应用程序可以正常工作。

1
你能否对应用程序进行两次分析,一次具有管理员权限,一次没有。这可能有助于减少问题出现在代码的哪个部分。 - keyboardP
请告知框架版本和目标平台(x86/x64)。 - lokusking
感谢您的时间。该应用程序是在.NET Framework 4.6.1下开发的,目标是所有类型的平台(任何CPU)。 - Dragos Stoica
不,还是没有改变。它在x86上运作非常缓慢。我也更新了NGEN... - Dragos Stoica
1
我认为您需要向项目添加清单文件,并将级别设置为 requireAdministrator - Maria
显示剩余5条评论
3个回答

2

哇,有点奇怪,但说得通。我从没听说过这个。好知道。 - Mafii
这些选项在我的电脑上设置正确,但如果我使用“禁用硬件加速”,该应用程序会出现一个有点奇怪的错误:“无法访问外部驱动程序”。 - Dragos Stoica
从那个错误开始,我发现我使用的其中一个驱动程序需要对一个放在AppData上的文件拥有权限。在我为那个文件设置了完全权限之后,应用程序立刻开始正常工作了。我会给你赏金,因为你的答案帮助了我,尽管你提出的设置已经存在。谢谢你花费的时间! - Dragos Stoica

1
尝试使用Process Monitor跟踪您的应用程序。运行两个跟踪,一个带管理员权限,一个不带。仅通过工具->进程树... ->右键单击进程->添加到包含筛选器过滤您的应用程序事件,并比较这些跟踪日志(或只需在此处发布)。注意注册表键读取或网络访问之间的间隔。

那几乎可能是任何东西。Mark Russinovich每年都会做一次关于发现一些有趣案例的演示。这里是其中之一

P.S. 很抱歉以回答的形式发布这个问题,但我现在没有足够的积分添加评论。


0
为了给可能遇到同样问题的人提供答案,经过我长时间的搜索,现在我可以说,这个问题主要与权限有关。如果你遇到这个问题,请尝试以非管理员身份运行Visual Studio,并尝试隔离应用程序开始变得非常缓慢(或崩溃的地方)。在我的情况下,不是数据库或日志文件,而是一个在AppData中被外部程序集使用的文件。我发现每次调用该dll时,应用程序都会冻结,并使用dotTrace找到了使用哪个文件。在设置了该文件的权限(读/写)后,一切恢复正常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接