par*_*ice 4 windows dll manifest
在 Windows XP 上,我为指定的应用程序重定向 user32.dll,但在 Windows 7 上使用相同的设置,不会重定向 user32.dll。
设置是这样的 - 一个目录包含:
app.exe
app.exe.manifest
user32.dll
app.exe.manifest 包含:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="0.0.0.0"
name="Redirection"
type="win32"
/>
<file
name="user32.dll"
/>
</assembly>
Run Code Online (Sandbox Code Playgroud)
在 Windows XP 上,app.exe 从应用程序文件夹加载 user32.dll。在 Windows 7 上,app.exe 从 system32 文件夹加载 user32.dll。
如何让 app.exe 从 Windows 7 上的应用程序文件夹加载 user32.dll?MSDN文档没有提到平台之间程序集工作方式的任何差异,但一定存在一些差异,导致重定向无法工作......
有任何想法吗?
因此,事实证明,从 Vista 开始,Windows 平台会进行一些激活上下文缓存,即在应用程序第一次运行时查找清单。如果在首次运行后添加或更改清单,Windows 不会费心寻找它以节省加载时间。
所以我的方案确实有效,但您需要通过修改应用程序二进制文件(例如时间戳)来强制 Windows 重新缓存激活上下文。
我尝试过,我的 user32.dll 是从应用程序目录加载到 Windows 7 中的。
参考:
http://blogs.msdn.com/b/vistacompatteam/archive/2006/11/13/manifest-and-the-fusion-cache.aspx
VB6 Manifest 不适用于 Windows 7
| 归档时间: |
|
| 查看次数: |
1706 次 |
| 最近记录: |