Winform程序使用app.minifest清单禁止高DPI无法失效问题

winform,app,minifest,dpi · 浏览次数 : 12

小编点评

**问题:** Winform程序使用 app.minifest清单禁止高DPI无法失效问题摘要:因为笔记本基本都会有 DPI放大,所以目前程序需要嵌入清单,并将其高DPI支持给禁止掉。 **环境搭建:** * Winform * app.minifest * 创建进程 AsUser **问题出现的原因:** * 某些机子的注册表设置导致清单不生效。 * 当对某路径下的程序设置了 HIGHDPIAWARE 支持后,清单里的配置不生效。 **解决方案:** 1. **删除清单文件:** 删除 `%APPDATA%\Microsoft\Windows\System32\drivers\etc\highdpi.inf` 文件。 2. **在清单文件中添加 HighDpiAware:** 在清单文件中添加以下配置: `` 3. **重启应用程序:** 重启应用程序以加载清单配置。 **其他提示:** * 在应用程序启动时,您可以使用 `SetHighDpiAware(true)` 方法强制启用 HighDPI 支持。 * 测试您的应用程序在不同机子的不同配置下是否正常运行。 * 如果您仍然遇到问题,请检查注册表设置。

正文

问题:Winform程序使用app.minifest清单禁止高DPI无法失效问题

摘要:因为笔记本基本都会有DPI放大,所以目前程序需要嵌入清单,并将其高DPI支持给禁止掉。

环境搭建:Winform、app.minifest

由于我的程序是使用CreateProcessAsUser来启动Winform,所以一开始以为是有权限问题。也有在群里跟大佬们还有工作的同事确认过使用的方式是否一致。最后确认是一致的,即采用explore.exe的token跟权限来启动我的Winform进程。

问题出现了清单在部分机子上能生效,部分机子生效不了

设置不支持高DPI的方式如下图:

 这些相信基本大家知道。但是在给配置的情况下,有些机子是正常,有些机子是不正常,还有的机子是一开始正常,后面突然又不正常,这就很不科学。所以后面经过一些排查考虑到可能是注册表问题,因此到注册表去全局搜索了下终于发现问题所在。

问题出现的根源,即导致清单不生效的情况之一

如图所示,经过验证,当这里对某路径下的程序设置了HIGHDPIAWARE支持后,会导致清单里的配置不生效。

 

解决方法

既然知道是注册表问题,那解决方法相信大家伙也都知道了怎么设置了。无非就是删除,后者把后面的值修改掉即可

最后

希望对大家有所帮助,还有什么问题可以在下方留言。谢谢!┭┮﹏┭┮希望不要再被移除了,这可是干货!!!!!!!

 

与Winform程序使用app.minifest清单禁止高DPI无法失效问题相似的内容:

Winform程序使用app.minifest清单禁止高DPI无法失效问题

问题:Winform程序使用app.minifest清单禁止高DPI无法失效问题 摘要:因为笔记本基本都会有DPI放大,所以目前程序需要嵌入清单,并将其高DPI支持给禁止掉。 环境搭建:Winform、app.minifest 由于我的程序是使用CreateProcessAsUser来启动Winfo

在Winform程序中动态绘制系统名称,代替图片硬编码名称

在以前我做程序的时候,一般在登录窗口里面显示程序名称,登录窗口一般设置一张背景图片,由于程序的名称一般都是确定的,所以也不存在太大的问题,不过如果客户定制不同的系统的时候,需要使用Photoshop修改下图层的文字,再生成图片,然后替换一下也可以了。不过本着减少客户使用繁琐性,也可以使用空白名称的通...

.NET C# 程序自动更新组件

引言 本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比如:WPF/Winform/Windows服务。大致思路:发现更新后,从网络上下载更新包并进行解压,同时在 WinFor

在WPF中使用WriteableBitmap对接工业相机及常用操作

写作背景 写这篇文章主要是因为工业相机(海康、大恒等)提供的.NET开发文档和示例程序都是用WinForm项目来说明举例的,而在WPF项目中对图像的使用和处理与在WinForm项目中有很大不同。在WinForm中用System.Drawing.Bitmap来处理图像,而在WPF中是用System.W

在Winform分页控件中集成保存用户列表显示字段及宽度调整设置

在Winform的分页控件里面,我们提供了很多丰富的功能,如常规分页,中文转义、导出Excel、导出PDF等,基于DevExpress的样式的分页控件,我们在其上面做了不少封装,以便更好的使用,其中就包括集成保存用户列表显示字段及宽度调整设置。本篇随笔介绍这个实现的过程,通过在当前程序中序列化方式存储一个记录用户设置的文件,提供介质的存储和加载处理。

Blazor技术入门

曾写过点儿前后端分离的项目(Vue+.NET Core Web API)、WPF和WinForm。因为Blazor不支持小程序的原因(相对于uniapp),所以只是大概知道Blazor可以写Web、PC和移动端项目,最大的特点就是使用C#代替JS。本文算是通过几个默认例子入门Blazor技术吧。 一

在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作

以前,我看到一个朋友在对一个系统做初始化的时候,通过一组魔幻般的按键,调出来一个隐藏的系统设置界面,这个界面在常规的菜单或者工具栏是看不到的,因为它是一个后台设置的关键界面,不公开,同时避免常规用户的误操作,它是作为一个超级管理员的入口功能,这个是很不错的思路。其实Winform做这样的处理也是很容...

记一次 .NET某汽车零件采集系统 卡死分析

一:背景 1. 讲故事 前段时间有位朋友在微信上找到我,说他的程序会出现一些偶发卡死的情况,让我帮忙看下是怎么回事,刚好朋友也抓到了dump,就让朋友把 dump 丢给我,接下来用 windbg 探究下到底咋回事。 二:WinDbg 分析 1. 程序真的卡死吗 因为是一个 winform 程序,验证

记一次 .NET 某企业OA后端服务 卡死分析

一:背景 1.讲故事 前段时间有位朋友微信找到我,说他生产机器上的 Console 服务看起来像是卡死了,也不生成日志,对方也收不到我的httpclient请求,不知道程序出现什么情况了,特来寻求帮助。 哈哈,一般来说卡死的情况在窗体程序(WinForm,WPF) 上特别多,在 Console,We

一个超经典 WinForm 卡死问题的再反思

一:背景 1.讲故事 这篇文章起源于昨天的一位朋友发给我的dump文件,说它的程序出现了卡死,看了下程序的主线程栈,居然又碰到了 OnUserPreferenceChanged 导致的挂死问题,真的是经典中的经典,线程栈如下: 0:000:x86> !clrstack OS Thread Id: 0