首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖UWP的WinSxS机制。专用于ComCtl32.dll

覆盖UWP的WinSxS机制。专用于ComCtl32.dll
EN

Stack Overflow用户
提问于 2017-11-07 18:46:03
回答 1查看 360关注 0票数 0

我正在创建一个通用Windows应用程序,它使用一个动态库(wkhtmltopdf),该库似乎通过其Qt实现依赖于comctl32.dll。现在,我可以在我的开发机器(Windows10Pro1607Build 14393.1770)上很好地运行该应用程序,但是,在目标计算机(Windows10Enterprise2015LTSB)上,我得到以下错误:

错误: Init例程67ABDD60用于DLL "C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.10240.16384_none_49c02355cf03478c\COMCTL32.dll“在DLL_PROCESS_ATTACH期间失败

在运行应用程序时,我注意到我的dev机器有不同版本的这个库(5.82.14393.447)。我知道comctl32.dll 6.0不是可再发行的,但我在5.82中没有看到同样的评论。我仍然决定打包我的版本的库并手动调用LoadPackagedLibrary。这将在我的dev机器上加载两个版本(如窗口中所示);在目标计算机上,它加载“更新”版本,但仍然尝试加载WinSxS上的版本,并且仍然会发生故障:

DLL - INFO: DLL COMCTL32.dll被C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.10240.16384_none_49c02355cf03478c\COMCTL32.dll重定向到SxS

看来我确实需要让WinSxS 而不是加载它的ComCtl32.dll版本,因为我用库的版本替换了目标机器中的C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.10240.16384_none_49c02355cf03478c\COMCTL32.dll。然而,这是不可取的。

是否有一种方法可以重新分发ComCtl32.dll的工作版本,这样它就不会尝试从WinSxS加载它?可能是通过清单文件,还是通过在目标计算机上运行MSI?

EN

回答 1

Stack Overflow用户

发布于 2017-11-30 08:29:21

对于UWP,Comctl32完全不支持。即使你设法让它“工作”,它可能在任何时间点崩溃--如果你在你的项目上运行(WACK),它会给你带来错误。

我非常肯定,对于UWP来说,融合(支持绑定到不同的DLL版本)也是禁用的。由于应用程序是独立的,并且不像遗留应用程序那样安装/共享系统库,所以不需要绑定重定向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47165322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档