WPF – 在SYSTEM帐户下执行进程时性能较低

问题描述

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

问题是当进程在SYSTEM帐户下运行时,有一些明显的滞后(UI不是很响应)。

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

我首先以为这是由于模拟的上下文中执行的过程,但即使没有模拟(我使用PsExec.exe -i -s在SYSTEM帐户下启动它),滞后仍然存在。

任何想法,这将是从哪里来的?
不要犹豫,问你是否需要更多的信息,我主要是寻找一些有助于find根本原因的想法(显而易见的解决方法是不启动SYSTEM帐户下的过程,但它不是一个修复)。

此外,请注意,应用程序在Windows Embedded Standard(XP SP3)的自定义版本下运行,并且在具有电容式触摸屏的设备上运行。

我的问题

我的问题不是“我怎么解决这个问题?” 但是“为什么在SYSTEM帐户下应用程序运行性能低下?

更新1

我试图改变Windows的性能优化设置为@Sanderbuild议,没有任何改变( http://support.microsoft.com/kb/308417 )。

更新2

我也做了一个testing使用这个应用程序: http : //www.kynosarges.org/WpfPerformance.html#Application
当在每个帐户下运行应用程序时,第一次GDI +testing(基本上绘制了一堆三angular形),我在SYSTEM帐户下的运行时间总是大约两倍,这导致我认为这不是严格的WPF限制。 再次,除了执行进程的帐户之外,我没有任何改变。

我想你应该完全绕过这个问题。 不要给系统服务用户界面,而应将应用程序分为两部分 – 一部分执行实际操作的部分将作为服务运行(无论帐户是否合理),另一部分 – 用户界面将以普通用户身份运行处理。

使用WCF相对容易地进行通信。

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

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

但是,当你从System acc运行它时,它必须实际启动一些你需要的服务。我猜测你可以通过识别这些服务来解决这个问题,并使用不同的线程来完成,周围的时间。

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