我有一个可执行文件,其中包含以下清单:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
因此应该搜索程序集的“ 6.0.0.0”版本。 寻找已安装的程序集-
C:\>dir C:\Windows\winsxs\Manifests\amd64_microsoft.windows.common-controls*
Volume in drive C has no label.
Volume Serial Number is DA28-1DA2
Directory of C:\Windows\winsxs\Manifests
11/21/2010 06:15 AM 3,554 amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_a4d6a923711520a9.manifest
07/04/2013 04:35 PM 3,554 amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18201_none_a4d3b9377117c3df.manifest
04/24/2015 11:37 PM 3,554 amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_a4d981ff711297b6.manifest
07/04/2013 03:59 PM 3,554 amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.22376_none_a6ba9bf96e3dcd13.manifest
04/24/2015 09:47 PM 3,554 amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.23039_none_a6b7fbc96e401250.manifest
11/21/2010 06:16 AM 3,729 amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac.manifest
04/24/2015 11:40 PM 3,729 amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_fa3b1e3d17594757.manifest
04/24/2015 09:50 PM 3,729 amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.23039_none_e36d4d173100d4ed.manifest
8 File(s) 28,957 bytes
0 Dir(s) 21,516,130,392 bytes free
因此,没有确切的“ 6.0.0.0”,但我们有“ 6.0.7601.17514”,“ 6.0.7601.18837”和“ 6.0.7601.23039”。 使用Process Explorer观察正在运行的进程,我看到已加载以下DLL: C:\ Windows \ winsxs \ amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_fa3b1e3d17594757 \ comctl32.dll 既不是最低版本也不是最高版本。我也无法通过绑定重定向找到任何策略清单。 所以基本上我的问题是-为何加载器选择此版本而不选择另一个版本?