首页 > 其他分享 >WPF 由于系统颜色配置 Mscms 组件损坏启动失败

WPF 由于系统颜色配置 Mscms 组件损坏启动失败

时间:2022-09-27 09:13:39浏览次数:80  
标签:Mscms Windows Media Object System dll 组件 WPF

本文记录 WPF 应用程序,因为系统的颜色配置 Mscms.dll 组件损坏导致应用加载图片失败,从而启动失败的原因和解决方法

在 WPF 应用加载图片时,将会调用到系统的 Mscms.dll 组件。刚好我遇到一个用户的设备上,他的 Mscms.dll 是损坏的,在 C:\Windows\SysWOW64\ 文件夹里面的 Mscms.dll 是 x64 的,于是在 WPF 加载将会抛出如下异常

System.Windows.Markup.XamlParseException: 初始化“System.Windows.Media.Imaging.BitmapImage”时引发了异常。
 ---> System.BadImageFormatException: 试图加载格式不正确的程序。 (0x8007000B)
   at MS.Win32.PresentationCore.UnsafeNativeMethods.Mscms.OpenColorProfile(PROFILE& pProfile, UInt32 dwDesiredAccess, UInt32 dwShareMode, UInt32 dwCreationMode)
   at System.Windows.Media.ColorContext.FromRawBytes(Byte[] data, Int32 dataLength, Boolean dontThrowException)
   at System.Windows.Media.ColorContext..ctor(SafeMILHandle colorContextHandle)
   at System.Windows.Media.ColorContext.GetColorContextsHelper(GetColorContextsDelegate getColorContexts)
   at System.Windows.Media.Imaging.BitmapFrameDecode.get_ColorContexts()
   at System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()
   at System.Windows.Media.Imaging.BitmapImage.EndInit()
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.InitializationGuard(XamlType xamlType, Object obj, Boolean begin)
   --- End of inner exception stack trace ---
   at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at Lindexi.Demo.MainWindow.InitializeComponent()
   at Lindexi.Demo.MainWindow..ctor()

修复方法是去下载对应系统版本的 Mscms.dll 进行替换。我从 https://www.dll-files.com/mscms.dll.html 里找到对应的版本,也就是 Win10 对应 Win10 的,而 Win7 对应 Win7 的,对 32 位的对应 32 位,对 64 位的对应 64 位,下载解压缩,放在对应的文件夹里面。如 32 位的放在 C:\Windows\SysWOW64\ 文件夹,如 64 位的放在 C:\Windows\System32\ 文件夹里面,替换原有文件即可

另外的可能由于 Mscms.dll 颜色配置导致起不来的,是在系统的颜色配置里面设置很诡异,解决方法是还原到默认。设置的入口还请自行搜 配置显示器颜色配置文件 的方法

标签:Mscms,Windows,Media,Object,System,dll,组件,WPF
From: https://www.cnblogs.com/lindexi/p/16733265.html

相关文章

  • 在 WPF 中实现融合效果
    1.融合效果融合效果是指对两个接近的元素进行高斯模糊后再提高对比度,使它们看上去“粘”在一起。在之前的一篇文章中,我使用Win2D实现了融合效果,效果如下:不过Win2D......
  • APIView的基本使用与序列化组件
    APIView的基本使用1.drf是一个第三方app,只能在django中使用2.安装drf后,导入视图类APOIView,所有后期要使用drf写视图类,都是继承AOIView及其子类3.在app注册中注册rest_......
  • drf2-apiView源码-基本使用-request类源码分析-序列化组件-基本使用-反序列化
    apiView基本使用apiview源码分析request类源码分析序列化组件介绍序列化组件基本使用(查询所有,查询单个)反序列化(新增,修改)ApiView基本使用drf是一个第三方的app,只能......
  • 通用 HTTP 签名组件的另类实现
    1、初衷开发中经常需要做一些接口的签名生成和校验工作,最开始的时候都是每个接口去按照约定单独实现,久而久之就变的非常难维护,因此就琢磨怎么能够写了一个比较通用的签名......
  • APIView基本使用、源码分析,Requset类源码分析,序列化组件的基本使用,反序列化
    1.APIView基本使用1.1使用View+JsonResponse写classBookView(View):defget(self,request):book_list=Book.objects.all()res_list=[]......
  • vue3+ts项目自定义input组件
    官网讲解v-model的原理<inputv-model="searchText"/>//等同于<input:value="searchText"@input="searchText=$event.target.value"/>//当用在组件上时,v-mode......
  • WPF学习 - 动画基础
    1.WPF中的动画(Animation),是一种属性动画。技术上来说,它是让属性从一个值,变化到另一个值的过程。因此,有两条条重要的特性:1.1只能为依赖属性应用动画 1.2动画只......
  • vue3中的provide和inject实现组件间通讯
    在vue2中我们已经使用过provide和inject来实现祖孙组件之间的数据传递,但是在vue3中由于我们使用setup,此时我们应该如何去使用provide和inject函数呢?在vue中帮我们提供了pr......
  • 简单记录-react学习,用函数式组件写井字棋
    React官方给定的教程,井字棋(tic-tac-toe),是使用class组件制作的,但是函数式组件才是未来,所以初学者的我用函数式组件重写一遍,简单记录一下。官方教程链接importReact,{u......
  • 给组件input/input-number做校验 vue antd
    input校验<a-inputv-model="formState.collectCardNum"placeholder="请输入"oninput="value=value.replace(/[^\w\.......