.net WPF-在系统帐户下执行进程时性能低 问题描述

.net WPF-在系统帐户下执行进程时性能低 问题描述,.net,wpf,windows,performance,windows-embedded,.net,Wpf,Windows,Performance,Windows Embedded,我有一个WPF应用程序,它通常在具有管理员权限的本地用户帐户下运行。但是,在某些情况下,流程由在系统帐户下运行的服务或脚本启动,因此流程也在系统帐户下运行 问题在于,当流程在系统帐户下运行时,会出现一些明显的滞后(UI响应性不强) 我使用perfmon进行了一些挖掘,没有发现任何可疑的东西(CPU没有过载,没有抛出异常,没有内存泄漏等…)。我还检查了事件日志,没有发现任何有用的信息(没有警告/错误,只有与系统无关的信息) 我最初认为这是由于进程是在模拟的上下文中执行的,但即使没有模拟(我使用Ps

我有一个WPF应用程序,它通常在具有管理员权限的本地用户帐户下运行。但是,在某些情况下,流程由在
系统
帐户下运行的服务或脚本启动,因此流程也在
系统
帐户下运行

问题在于,当流程在
系统
帐户下运行时,会出现一些明显的滞后(UI响应性不强)

我使用perfmon进行了一些挖掘,没有发现任何可疑的东西(CPU没有过载,没有抛出异常,没有内存泄漏等…)。我还检查了事件日志,没有发现任何有用的信息(没有警告/错误,只有与系统无关的信息)

我最初认为这是由于进程是在模拟的上下文中执行的,但即使没有模拟(我使用
PsExec.exe-I-s
在系统帐户下启动它),延迟仍然存在

知道这是从哪里来的吗?
如果您需要更多信息,请不要犹豫,我主要是在寻找一些有助于找到根本原因的想法(显而易见的解决办法是不要在SYSTEM account下启动流程,但这并不是真正的解决方案)

另外,请注意,该应用程序是在自定义版本的Windows嵌入式标准(XP SP3)和带有电容式触摸屏的设备上运行的

我的问题 我的问题不是“我如何解决这个问题?”而是“为什么应用程序在系统帐户下运行时性能低下?”

更新1 我试图按照@Sander的建议更改Windows的性能优化设置,但没有任何更改()

更新2 我还使用此应用程序进行了测试:

当在每个帐户下运行应用程序时,在第一次GDI+测试中,我在系统帐户下的运行时间通常会延长两倍(它基本上画了一组三角形),这让我觉得这并不是严格的WPF限制。同样,我没有更改任何内容,只是更改了执行流程的帐户。

我认为您应该完全绕过这个问题。不要提供系统服务UI,而是将应用程序分为两个部分-一个将执行实际操作的部分将作为服务运行ice(在任何有意义的账户下)和另一个——UI——将作为普通用户进程运行

使用WCF在两者之间进行通信相对容易


它将解决您的性能问题,以及您的解决方案暴露的许多潜在安全问题。

当用户登录时,系统中需要的大部分服务都已启动并正在运行。例如,无论您在taskmanager和系统托盘中看到什么

但是,当您从系统acc运行它时,它实际上必须启动您的案例中需要的一些服务。我猜您可以通过识别这些服务并使用不同的线程来解决它,这可能会减少您的周转时间

但是,性能和CPU使用率肯定会受到影响。我希望这是有意义的。
谢谢

我知道有一些“为a)前景优化性能;b) 后台进程“在Windows中设置。也许它认为作为系统运行意味着它是一个后台进程,因此它会在该帐户下对进程进行去优化?假设它设置为首选前台进程。我怀疑它会为未优化的变体安排更少的时间。您的应用程序是否已进入网络?由于代理设置的原因,在系统帐户下运行的应用程序在访问网络资源时可能会遇到问题。@桑德:只是试图更改这些设置,没有效果。@马克:是的,应用程序建立了很多网络连接,但即使网络上没有任何事情发生,应用程序也会运行缓慢。例如,它运行的设备有一个触摸屏,当按下虚拟键盘上的键时,视觉反馈很慢(此处不涉及网络资源访问)。您是否在不同的帐户下分析了应用程序?其优先级是否设置为“正常”?情况已经如此。服务在系统帐户下运行,应用程序通常在管理员下运行,除非我们必须在系统帐户下临时执行它。我知道解决方案是修改我们的代码,这样就不需要在系统下运行它,但我想问的是为什么会出现性能问题。