题
我创建了一个简单的Win32应用程序来表明UXtheme在XP通过包括一个清单上的依赖性ver6commctl32.dll
然后我创建了一个简单的Win32dll,建它 ISOLATION_AWARE_ENABLED
, 和测试,它有一个嵌入清单的指定这两个版本的5和6的Comctl32.dll
我成功得到了exe和dll使用不同版本的comctl32.dll 使用这种方法。两exe使用5和dll6个版本,和周围的其他方法。
然后,我重设程序和dll有comctl ver5清单的依赖。并引入了一个应用程序配置文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<windows>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df"/>
<bindingRedirect oldVersion="5.82.7100.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</windows>
</configuration>
现在,当我运行了我的申请,该应用程序显然正在重新定向到commctl v6对话都清楚地显示,使用XP UXTheme启用。然而,dll是不被转用于非主题ver5commctl.
没有提到的每dll配置文件的做bindingRedirects在文件。并试图建立一个没有做任何事情。
我也知道做一个取从一个主要的组件,另一个是不是一个受支持的方案,但我真的只是使用commctl32作为一个明显简单的方法来测试的机制。
我怎么向版本的依赖大会的dll?
解决方案 2
因此,这个问题已经回答。
- 我用过程监视器追踪的文件访问,
- 后实现访问。清单。配置文件来自csrss.exe 不我自己处理,
- 和Windows Vista甚至不会的访问。清单。配置文件之后添加的,因为它缓存他们的存在,随着一个日期时间戳exe。
毕竟,我发现,LoadLibrary并探头。配置文件装载时dll:
full_path_to_dll\dllname.dll.2.config
绑定重定向在该文件将处理。
其他提示
和Windows Vista甚至不会访问.manifest的或.config文件是 后来被加入,因为它沿着缓存的存在有日期时间 标记有关的exe。
我发现,注销/上似乎清除触发器的配置文件再次被读取。
不隶属于 StackOverflow