dll - Windows 10 点本地重定向未按预期运行
问题描述
我们使用的是早期版本的商业应用程序doors.exe。最新的 Windows 10 更新打破了它。使用 Windows 7 中的 msftedit.dll 可以恢复它。以下是我尝试过的三种情况。我不明白为什么第一个和最后一个功能的方式是他们所做的,而不是文档似乎说他们应该的方式。问题在第一个和最后一个项目符号中。
- 如果我在与doors.exe 可执行文件相同的位置创建一个目录doors.exe.local 并将win7 dll 放入该目录,它会被忽略并使用SysWOW64 中的那个。为什么不使用 .local 目录?
- 如果我把win7 dll和doors.exe放在同一个目录下,不管我有没有一个名为doors.exe.local的空文件,都会使用win7。
- 如果我将 win7 dll 放入doors.exe 目录但不创建doors.exe.local 重定向文件,我希望doors.exe 将使用加载的任何dll,并且仅在未加载任何内容时才使用win7 dll。如果我先启动写字板,它也使用msftedit.dll,然后启动doors.exe,doors.exe 仍然使用本地的msftedit.dll。为什么不使用与写字板相同的 dll?
我正在使用 Process Explorer 来准确查看哪个进程使用了哪个 dll。
上述行为似乎与我在 MSDN 文档中所读到的相反。https://docs.microsoft.com/en-us/windows/desktop/dlls/dynamic-link-library-redirection
我错过了什么/不理解什么?
谢谢,丹尼尔
解决方案
你知道 msftedit.dll 是否加载了相对路径?或者更简单,只是名字?您描述的内容符合标准 LoadLibrary 搜索顺序。首先是当前工作目录。
我也在为本地重定向而苦苦挣扎。我有 3 台 PC 可以正常工作,1 台不能正常工作。
推荐阅读
- android - 如何制作负载回收器适配器以使其快速
- go - 如何返回频道
- python-3.x - 如何正确显示解压后的 UDP 数据
- caching - 在这些缓存场景中,代码在哪里执行?
- cordova - 如何在没有 Ionic 服务的情况下在我的设备上测试我的应用程序
- docker - 无法在主节点上运行 Kubernetes 仪表板
- java - 在 oracle DB 中插入字符串值在 sql developer 中显示空值
- javascript - 在 JavaScript 中为数组的多个元素分配相同的值
- c++ - 在 SFML 中使用 TcpSocket 发送数据会导致分段错误
- c# - 如果我将 Mutex 声明为静态 (WPF),我是否需要担心它会被垃圾回收?