WPF - 在系统帐户下执行进程时性能低下

2024-01-07

问题描述

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

问题是当进程运行时SYSTEM帐户时,存在一些明显的滞后(用户界面响应不是很灵敏)。

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

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

知道这会从哪里来吗?
如果您需要更多信息,请毫不犹豫地询问,我主要是在寻找一些有助于找到根本原因的想法(明显的解决方法是不在 SYSTEM 帐户下启动该进程,但这并不是真正的修复)。

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

我的问题

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

Update 1

我尝试按照 @Sander 的建议更改 Windows 性能优化设置,但没有任何改变(http://support.microsoft.com/kb/308417 http://support.microsoft.com/kb/308417).

Update 2

我还使用这个应用程序做了一个测试:http://www.kynosarges.org/WpfPerformance.html#Application http://www.kynosarges.org/WpfPerformance.html#Application
在每个帐户下运行应用程序时,在第一个 GDI+ 测试的 SYSTEM 帐户下,我的运行时间始终长出大约两倍(它基本上绘制了一堆三角形),这让我认为这并不是严格的 WPF 限制。同样,除了执行进程的帐户之外,我没有更改任何内容。


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF - 在系统帐户下执行进程时性能低下 的相关文章

  • 我应该增强客户端上的 Jquery Mobile 元素还是发送带有 data-enhance="false" 的增强标记?

    我有一个产品搜索 我正在发送回结果 每个结果都包含两个按钮 JQM 控制组 我一次发送 24 条记录 因此需要增强 24 个控制组 如下所示 div class submitButton linkBox div
  • 如何在 REST WCF 服务中接受任意 JSON 对象?

    我想实现这样的服务方法 OperationContract WebInvoke RequestFormat WebMessageFormat Json ResponseFormat WebMessageFormat Json public
  • 异步迭代器 Task>

    我正在尝试实现一个返回迭代器的异步函数 这个想法如下 private async Task
  • 在.net中的lock语句中调用Thread.Sleep()

    我想知道在已经获取监视器的线程上调用 Thread Sleep 是否会在进入睡眠状态之前释放锁 object o new object Montior Enter o Thread Sleep 1000 Monitor Exit o 当线程
  • 我对 MVVM 模式有一些疑问

    我叫 Jes s 来自西班牙 是一名 NET 开发人员 几天前我刚刚发现了这个伟大的网络 我有一些关于 MVVM 模式的问题 如果您能回答我 我将很高兴 我三个月前开始使用 WPF 并且学习了 MVP 模式 MVP 非常好 因为您可以很好地
  • 异步protobuf序列化

    protobuf net 实现的一个限制是它同步调用底层流 通过不提供异步 API 例如BeginSerialize EndSerialize 或 TPL 等效项 我们被迫占用一个等待同步流 I O 的线程 是否有计划在 protobuf
  • 可以禁用“应用程序错误”对话框吗?

    我使用 Hudson 作为持续集成服务器来测试 C C 代码 不幸的是 我在某个地方有一个错误导致内存损坏 因此在某些 Windows 计算机上我有时会收到一个 应用程序错误 对话框 解释一条指令引用了无法读取的内存 弹出此对话框并基本上挂
  • C#中如何通过Proxy访问互联网

    我正在使用 C 设计一个 Windows 窗体应用程序 当连接到互联网时 该应用程序可以顺利执行其功能 但当我们在学院尝试该应用程序时 真正的问题就开始了 我们的学院使用代理网关连接到网络 代理服务器是192 168 120 5和代理端口8
  • WPF:在 DependencyProperty.UnsetValue 上触发

    在回答中这个问题 https stackoverflow com questions 2596847 wpf applying a trigger on binding failure作出以下声明 理论上 可能 触发 x Static De
  • 用 C 更快地读取文件

    嗯 我想知道是否有一种比使用 fscanf 更快地读取文件的方法 例如假设我有这个文本 4 55 k 52 o 24 l 523 i 首先 我想读取第一个数字 它给出了接下来的行数 令这个数称为N N 之后 我想读取 N 行 其中有一个整数
  • 使用 SSL 设置 .Net IBM.XMS 客户端

    我必须创建一个客户端来侦听队列上的消息 正在使用 SSL 我正在 dot net 中进行开发 我浏览了数百页的文档和论坛 找到了一些清晰简洁的内容 但看起来事实并非如此 我有一个 jks 并且我能够 telnet 到正在发布队列的服务器 下
  • 将 HttpApi 与 I/O 完成端口结合使用

    我刚刚偶然发现了微软的HTTP 服务器 API http msdn microsoft com en us library aa364510 28v vs 85 29 aspx 简介中写道 HTTP 服务器 API 使应用程序能够通过 HT
  • MSI 和 EXE 安装程序有什么区别,我应该选择哪一个? [复制]

    这个问题在这里已经有答案了 可能的重复 msi 和 setup exe 文件之间有什么具体区别 https stackoverflow com questions 1789530 what are the specific differen
  • PostgreSQL:在所有表字段的长度上创建索引

    我有一张桌子叫profile 我想按照填写最多的内容对它们进行排序 每列都是 JSONB 列或 TEXT 列 我不需要很大程度的确定性 所以通常我会按如下方式订购 SELECT FROM profile ORDER BY LENGTH CO
  • Winforms 风格/UI 外观和感觉提示

    从多年的 asp net 开发回到 winforms 应用程序 寻找有关如何 设计 winforms 的建议和技巧 类似于我在 asp net 中使用 CSS 母版页的方式 我对如何在一处更新某些类型的控件的字体 颜色感兴趣 如何保持布局的
  • 从 EC2 W2008 实例创建 AMI - 为什么从来没有获得密码?

    我正在尝试做什么 我正在尝试克隆 EC2视窗2008通过管理控制台实例 该实例基于 Windows Server2008 i386 Base v104 ami 92ba43fb 但上面安装了许多应用程序 我想为新实例保留这些应用程序 发生了
  • 在桌面应用程序中,类库的连接字符串存储在哪里?我可以在app.config中使用吗?

    我是桌面应用程序开发的新手 目前正在使用分层架构 用户界面 DAL BLL 构建桌面应用程序 在 Web 开发中 我曾经将连接字符串存储在 web config 中 我的类库从那里访问它 请指导我在桌面应用程序中如何以及在何处存储 DAL
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString

随机推荐

  • 为什么 AngularJS 应用程序中的空白被忽略

    AngularJS 应用 ng model 指令将输入字段绑定到控制器属性 在我的应用程序中 带空格的输入将被忽略 例如 A 结果输出是 A 有没有办法也包含这些空白 Fiddled here http jsfiddle net pa6sd
  • 确保 Web 服务安全

    我正在完成我的 iPhone 应用程序 我只是担心我们的网络服务器级别的安全性 数据通过网络服务被转移到 iPhone 应用程序 我可以在 Web 服务上采取哪些安全措施 以免受到攻击 Thanks 一些提示 使用以下命令验证来自 Web
  • 在 OSX 中拦截键盘输入

    我正在尝试编写一个应用程序来防止某些关键信号传播到 OSX 中的操作系统之外 为了澄清这一点 我想让用户感觉他们在键盘上按的键似乎坏了 因此 关联的字母不会显示在文本区域中 按键不会激活另一个应用程序中的功能 等等 有什么想法吗 提前致谢
  • 使用 SQL 查询打印素数的最佳逻辑 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 MongoDB MySQL CockroachDB 中通过 SQL 获取 2 到 1000 素数的最有效方法是什么 我在Oracle中的查询
  • TXMLDocument 的替代方案?

    最近 我们将代码从 Delphi 2009 升级到 Delphi XE 并更新了我们的 Indy 组件 不确定这是否相关 但从那时起 我们在 Windows Server 2003 计算机上加载和保存 XML 文件时就会出现错误 XMLDo
  • 你可以有多个 UnityAppController 的子类吗?

    我需要添加一些代码application didFinishLaunchingWithOptions in UnityAppController使用其 Objective C SDK 配置 Google AdWords 转化跟踪 每次 Un
  • Objective C JAVA 字节序

    我使用的是 64 位 Mac 并且我确信 Java 在我的例子中是 1 6 正在使用 big endian 我正在尝试从 Objective C 中的 iPhone 与我的 java 服务器进行通信 iPhone objective C 使
  • 在我的 Android 项目中使用领域数据库时无法生成 GlideApp 和 Glide 请求

    我使用 Glide 来处理图像 到目前为止它运行良好 但是现在 当我将 Realm 数据库集成到我的项目中时 它在生成 GlideApp 和 GlideRequests 类时出现错误 主要构建 gradle buildscript repo
  • GIF 图像在“document.location.href”时停止

    我在 javascript 中有这个函数 function loadPage url showLoadPageGif visibility On document location href getPath url 当我使用此功能时 GIF
  • 如何从 Knex / Postgresql 查询返回纯值?

    我正在尝试使用 Knex 从 Postgres DB 返回一个简单的标量字符串值 到目前为止 我所做的一切都会返回一个带有键 列名 和值的 JSON 对象 因此我必须访问该对象才能获取值 如果我返回多行 那么我会得到多个 JSON 对象 每
  • Python 动态属性和 mypy

    我试图将一些函数屏蔽为属性 通过包装器 这在这里并不重要 并将它们动态添加到对象中 但是 我需要代码完成和 mypy 才能工作 我想出了如何动态添加属性 通过元类或简单地在构造函数中 但我遇到的问题是 mypy 没有选择它 IDE 也没有
  • 如何从android将值传递到php?

    我在将值从 android 传递到 php 脚本时遇到问题 我想要questionid传递到 php 脚本url get ansurl但我无法传递该值 这个怎么做 请指导我 多谢 try int success json getInt TA
  • 自定义 UIAlertView 上的按钮

    这是我自定义按钮的当前方式 UIAlertView av UIAlertView alloc init av addButtonWithTitle UIButton yesButton av subviews lastObject av s
  • 使用 htaccess 将网站重定向到移动版网站

    您好 我使用以下代码重定向到移动网站 从移动到移动网站 移动中的domain com到m domain com 它工作正常 但网址末尾的 id 9 即将到来 如何删除 id 9 从 url 以及如何将移动网站 m domain com 从桌
  • Android 视图转换是否在光栅化后应用?

    下面代码中的行 A 和行 B 应生成相同的图像 然而 行 A 却生成了图像 怎么了 光栅化后是否应用视图 画布转换 import android content Context import android graphics Canvas
  • express.js - 单行中多个路由的单个路由处理程序

    有没有办法在单个函数调用中做到这一点 var todo function req res app get todo app get blabla todo app get blablablabla todo 就像是 app get blab
  • Google 联系 gdata (Java) 因内容类型没有解析器而失败:application-xml[application/xml]

    最近 两天前 当我们尝试访问联系人时 我们开始在 Java 中的 google gdata 客户端中遇到异常 提要 m8 feeds contacts default full 例外的是 com google gdata util Pars
  • 如何使用 Gmail Api 获取邮件列表?

    我想访问消息列表 Object 2 0 0 p481 008 gt g gmail api users messages list gt lt Google APIClient Method 0x41c948c ID gmail users
  • SQLite多进程访问

    我们在多进程和多线程应用程序中使用 SQLite SQLite 数据库文件使用嵌入式 SQLite 加密进行加密 这FAQ http sqlite org faq html q5指出 SQLite 应该能够使用锁机制来管理多进程访问 我们遇
  • WPF - 在系统帐户下执行进程时性能低下

    问题描述 我有一个 WPF 应用程序 通常在具有管理员权限的本地用户帐户下运行 但是 在某些情况下 该进程是由运行在下面的服务或脚本启动的SYSTEM帐户 因此该进程也在SYSTEM帐户 问题是当进程运行时SYSTEM帐户时 存在一些明显的