使用 uiAccess=True 安装桌面 WPF 应用程序时的注意事项

2024-06-22

背景:

我需要在另一台显示器上创建调光效果。我想我通过使用 WPF 窗口解决了这个问题,该窗口占据了整个屏幕尺寸Topmost and AllowsTransparency= 正确。它具有内部黑色发光效果并具有风格WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW应用于它(除其他外)以允许用户单击其背后的应用程序。

我监控EVENT_OBJECT_REORDERWindows 中的事件和调用SetWindowPos强制最顶层状态位于其他最顶层窗口之上。到目前为止,它在我的概念验证测试中似乎运行良好。

我发现的问题是这个变暗(窗口)会覆盖任务栏,但如果我单击“开始”菜单则不会。我目前正在使用 Windows 10 进行测试。如果我单击“开始”菜单,它会导致“开始”菜单和任务栏出现在变暗(窗口)上方。我希望一切都保持昏暗,永远。

我通过设置解决了这个问题uiAccess=true 在应用程序清单中,生成自签名证书,并将 exe 复制到“c:\program files*”。这允许我强制窗口处于最顶层状态,甚至位于“开始”菜单上方。

我的问题:

  • 有没有办法将窗口定位在“开始”菜单上而不需要uiAccess?或者甚至是另一种在不使用窗口的情况下强制屏幕变暗的方法(但不依赖于显示器驱动程序或硬件功能)?

  • 如果没有,在分发 WPF 应用程序(通过 WiX 安装项目或类似项目)以绕过 UIPI 限制时,我需要牢记哪些注意事项uiAccess=真的吗?我可以在设置过程中简单地安装我的自签名证书吗?用户会遇到任何额外的障碍吗?作为一名开发人员,我在构建此项目时是否会遇到任何其他障碍(除了我已经提到的之外)?

谢谢你!


我监视 EVENT_OBJECT_REORDER 事件

您正在使用 SetWinEventHook()。这个场景失败了经典的“如果two程序就是这样做的”括号。Raymond Chen 在这篇博文 https://blogs.msdn.microsoft.com/oldnewthing/20050607-00/?p=35413,给你的方法一个专职岗位 https://blogs.msdn.microsoft.com/oldnewthing/20110310-00/?p=11253.

这比您想象的要常见得多。每台 Windows 机器都有一个执行此操作的程序,例如运行Osk.exe,屏幕键盘程序。有趣的实验,我预测它会严重闪烁一段时间,但假设它最终会放弃。实际上不确定它是否有效,上次我尝试此操作是在 Vista 时间,但它不会,请告诉我们。

相当肯定您会得出结论,这不是正确的方法,因此 uiAccess 也没有实际意义。您需要它来绕过 UIPI 并使 SetWindowPos() 工作。 UAC 的一个方面,阻止程序尝试劫持提升的程序的功能。覆盖“开始”窗口相当于 DOS 攻击。这里更大的问题是你的自签名证书不起作用,你必须购买一个真正的证书。每约 7 年就会让您损失数百美元。

使用软件控制显示器亮度并不容易正确完成。每个人都使用 SetDeviceGammaRamp(),这也是您应该做的。 MSDN 文档会给您带来很多 FUD,但据我所知,每个主流视频适配器驱动程序都实现了它。它在游戏中很流行。一个不可避免的限制是它仅对运行程序的桌面有效。因此不适用于安全桌面(屏幕保护程序和 Ctrl+Alt+Del),也不适用于其他登录会话,除非它们也启动您的程序。

WMI 太不稳定,无法考虑。不太确定为什么它经常失败,我认为这与视频适配器和显示器之间通常不太理想的 I2C 互连有关。或者想要通过 Fn 按键控制亮度的笔记本电脑,该功能总是胜出。或者 Windows 功能可以根据环境光自动调整亮度,这总是更理想的方法,但很难遵循。

最常见的结果可能是用户对你的程序不屑一顾,并对笨拙的显示器控件大加咒骂。但他会摆弄它并找出答案。对不起。

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

使用 uiAccess=True 安装桌面 WPF 应用程序时的注意事项 的相关文章

  • VS2010中VSHost.exe不断启动

    我正在 VS2010 中使用一个包含大量项目的解决方案 但它不断变得无响应 我注意到的一件事可能是一条线索 尽管我尚未开始任何调试 但 MyApplicationName vshost exe 不断出现在进程列表中 也许每当构建发生时它就会
  • 有没有更快的方法来获取卷序列号?

    您好 我正在使用此代码来生成机器签名 但执行起来需要相当长的时间 想知道为什么这么慢 有什么更快的方法推荐吗 Public Shared Function DriveSN ByVal DriveLetter As String As Str
  • 测试从 ComboBox 派生的自定义控件

    我创建了一个从 ComboBox 派生的控件 并希望对其行为进行单元测试 但是 它在我的单元测试中的行为似乎与实际应用程序中的行为不同 在实际应用程序中 Combobox DataSource 属性和 Items 同步 换句话说 当我更改
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • WPF 复选框状态不会在固定页面中更新

    我正在尝试导出一些基于在 WPF 中用作模板的固定页面元素的数据 并且我在更新复选框的值时似乎遇到问题 奇怪的是 我还在模板中使用了文本块和文本框 但这些在更新其内容时没有问题 所以 从一开始 我想要导出的数据位于名为 RepairStat
  • 链接错误:xxx 已在 *****.LIB 中定义:: 究竟出了什么问题?

    Problem 我正在尝试使用一个名为DCMTK http dicom offis de dcmtk它使用了一些其他外部库 zlib libtiff libpng libxml2 libiconv 我已经从同一网站下载了这些外部库 LIB
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 将 R 值传递给采用 L 值的函数时出现过载歧义

    我有 2 个重载函数 一个采用 L 值 另一个采用 R 值 目的是让该函数可以像这样调用 Obj obj foo obj OR foo Obj 所以 我写了2个重载函数 template
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 是否可以在 Eclipse 中为除 Java 之外的 Eclipse 编写插件?

    谁能帮我用c 写一个eclipse插件 weekens 和 celavek 感谢您提供的信息 我正在研究 JNI 并将尝试实现它 celavek 我们必须做什么样的主控 控制 在C 和java接口中处理是否风险更大 我的要求是在 Java
  • 64 位随机生成器种子

    我目前正在运行一个具有 8 个以上管道 线程 的多线程模拟应用程序 这些管道运行非常复杂的代码 该代码取决于种子生成的随机序列 然后该序列被归结为单个 0 1 我希望在将种子从主线程传递到处理管道后 这种 随机处理 具有 100 的确定性
  • 使用反射检测属性的访问修饰符类型

    我编写了一些代码来使用反射查看属性 我已经使用反射从类中检索了属性列表 但是我需要查明该财产是公共的还是受保护的 例如 public string Name get set protected int Age get set Propert
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 如何以一对一/零关系更新员工和身份用户

    我正在尝试更新员工记录 也想更新身份用户 如果我先单独更新身份用户 例如 UserManager Update user Context Entry employee State System Data Entity EntityState
  • 自动化 WinDBG 或以其他方式从转储文件中提取信息?

    假设我有一个进程的内存转储 我想对其运行报告 所以本质上我想打开 WinDBG 加载 SOS 并运行一个脚本 该脚本运行一些命令 解析输出 然后基于该结果运行更多命令 除了像 SendKeys 这样的黑客行为之外 还有没有办法自动化 脚本化

随机推荐

  • 如何在 Windows 7 上加速 Rails 控制台?

    有没有办法加快 Windows 7 上的 Rails 控制台速度 您可以安装虚拟盒子 http www virtualbox org 使用任何操作系统 例如 Ubuntu Server 10 04 LTS 并在此沙箱中部署 Rails 应用
  • LINQ 连接 2 个列表

    前言 我不明白这是做什么的 o gt o ID i gt i ID o id gt o 所以对我宽容点吧 我有 2 个列表需要连接在一起 list1 contains ALL contacts for a customer Each ite
  • ReSharper 缩写列表:在哪里可以修改它?

    我使用的是 ReSharper 4 5 当我将显式属性转换为自动属性时经常发生的情况是 我会意外选择 将 XX 添加到缩写列表 即 我想将 CustomerID 转换为自动属性 但由于手忙脚乱 我会不小心将 ID 添加到缩写列表中 这是我不
  • transform3d():使用百分比在父对象内移动

    当以百分比移动对象时 CSS 具有标准行为 该百分比代表其父容器 div 的尺寸 使用 CSS3 时情况并非如此transform translate3d 如果对 X Y 或 Z 坐标使用百分比值 则百分比表示当前对象的尺寸 而不是其父级
  • iOS - 如何刷新/更新核心数据瞬态属性?

    我正在使用核心数据 NSFetchedResultsController UITableView 和瞬态 NSDate 属性 我将其作为瞬态属性的主要原因是 我的 UITableView 条目被放入基于 NSDate 的部分中 但当日期更改
  • 如何在 ZF2 中执行 INSERT INTO SELECT 查询

    在 ZF2 中执行 INSERT INTO SELECT 查询的最佳方法是什么 我需要在 ZF2 中开发一个函数 该函数从一个表中选择记录的子集并将这些记录插入到另一个表中 如果我用 SQL 编程 该语句将如下所示 INSERT INTO
  • android facebook api 帖子

    我有个问题 我想使用 facebook api 并在我的墙上发布帖子而不调用对话框 基本上我有一个应用程序 我希望人们能够共享该应用程序 所以我想发布一条特定的消息 我不断收到 方法未实施 的回复 这是帖子的代码 I tried this
  • Pygobject GTK3 中 Gtk.GLArea 的使用

    Gtk3 的 python 包装器的使用文档有些有限 我找到了几个常见的小部件示例 我正在尝试使用 Gtk GLArea 小部件 API 文档是针对 C 的 我没有太多运气猜测使用这个小部件的等效 python 调用 在示例中 小部件是使用
  • 如何删除 process.env 中的值?

    我想从中删除一个值process env process env VALUE I WANT REMOVED undefined 但当我这样做时 process env VALUE I WANT REMOVED设置为字符串 undefined
  • Tiff 注释

    在哪里可以找到 Tiff 注释 Wang Kodak 格式规范 需要解析其中一些并放入文本文件 浪费了很多时间谷歌搜索没有结果 哪些 NET SDK 可以使用这些标签进行操作 有免费sdk者优先 Libtiff 对任何 tiff 标签的大小
  • 检查 Active Directory 帐户是否被锁定 (WPF C#)

    大家好 这是我的第一篇文章 我有一些从 Codeplex 中提取的简单 AD 代码http www codeproject com Articles 18102 Howto Almost Everything In Active Direc
  • 将 jQuery Post 发送到 Google API 时出现 Access-Control-Allow-Origin 错误

    我读了很多 Access Control Allow Origin 错误 但我不明白我必须修复什么 我正在使用 Google Moderator API 但是当我尝试添加新系列 http code google com apis moder
  • 将数据传递给 Angular 4 中的第 n 级子组件

    下面是我在 Angular 应用程序中的组件结构 应用程序组件 html 单位 component html 节 组件 html appData 标题 我正在 app component ts 中创建 appData 我想在子组件的第三级
  • 如何阻止在文本框中输入电子邮件地址或显示弹出窗口?

    我需要一个textbox在我的表单中输入电子邮件地址 但地址应该是企业电子邮件 决不允许输入个人gmail or yahoo这样做时解决或显示警告弹出窗口 如何实现 我可以使用angulars ng pattern来实施吗 你可以做这样的事
  • xlsx 中的 getHighestColumn 不起作用

    有这段代码 使用 PHPExcel public function getHighestColumn return this gt objPHPExcel gt setActiveSheetIndex 0 gt getHighestColu
  • 如何在 ColdFusion 中不使用 Results.columnname 打印所有结果

    如何在 ColdFusion 中不使用 Results columnname 打印所有结果 例如 I have
  • 基于 Visual Studio 和 Nuget 的测试运行器/适配器

    最近我开始了解基于 nuget 的适配器 运行器 http xunit github io docs running tests in vs html http xunit github io docs running tests in v
  • f:selectOneMenu 带参数

    我有一组 用户 组和一个显示这些组 和用户 的表格 每个组表头包含一个f selectOneMenu它允许设置一个组范围的值 在本示例中 将其设为 int 值 0 5 10 15 20 的列表 下面是事情的简短版本 Pojos public
  • VBA:使用 Windows 身份验证登录

    我有一个 Access 应用程序 要求用户输入其 Windows 域用户和密码才能进入 我使用以下 VBA 代码来完成此任务 Function WindowsLogin ByVal strUserName As String ByVal s
  • 使用 uiAccess=True 安装桌面 WPF 应用程序时的注意事项

    背景 我需要在另一台显示器上创建调光效果 我想我通过使用 WPF 窗口解决了这个问题 该窗口占据了整个屏幕尺寸Topmost and AllowsTransparency 正确 它具有内部黑色发光效果并具有风格WS EX TRANSPARE