Windows 10 точка локального перенаправления не работает, как я ожидал - PullRequest
0 голосов
/ 22 сентября 2018

Мы используем более раннюю версию коммерческого приложения doors.exe.Последнее обновление Windows 10 сломало его.Использование msftedit.dll из Windows 7 восстанавливает его.Ниже приведены три сценария, которые я попробовал.Я не понимаю, почему первая и последняя функции работают именно так, а не так, как кажется в документации.Вопросы находятся в первом и последнем пуле.

  • Если я создаю каталог doors.exe.local в том же месте, что и исполняемый файл doors.exe, и помещаю в него каталог win7, он игнорируетсяи тот, что в SysWOW64 используется.Почему он не использует каталог .local?
  • Если я помещаю win7 dll в тот же каталог, что и doors.exe, используется win7, независимо от того, есть ли у меня пустой файл с именем doors.exe.local.
  • Если я помещаю win7 dll в каталог doors.exe, но не создаю файл перенаправления doors.exe.local, я ожидаю, что doors.exe будет использовать любую загруженную dll и использовать только win7 dllесли ничего не было загружено.Если я сначала запускаю WordPad, который также использует msftedit.dll, а затем запускаю doors.exe, doors.exe по-прежнему использует локальный msftedit.dll.Почему он не использует ту же библиотеку DLL, что и WordPad?

Я использую Process Explorer, чтобы точно определить, какая DLL используется каким процессом.

Представленное выше поведение кажется противоречащим тому, чтоЯ прочитал в документации MSDN.https://docs.microsoft.com/en-us/windows/desktop/dlls/dynamic-link-library-redirection

Что я упускаю / не понимаю?

Спасибо, Даниэль

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я обнаружил, как работает перенаправление библиотеки динамических ссылок / Dot Local.Он использует своего рода кэширование для каждого экземпляра .exe, чтобы пометить, используется перенаправление или нет.

Когда у вас есть app.exe, при первом запуске его на вашем компьютере он отмечает, будет ли он использовать перенаправление илине.В дальнейшем это решение остается вне зависимости от того, помещаете или удаляете файл / папку app.exe.local.Я еще не знаю, где хранится значение кэша.Я искал в реестре кеш, но не нашел его.

Пример 1 : если у вас есть app.exe, а рядом с ним нет app.exe.local, и вызапустите его первый раз, позже никогда не будете использовать перенаправление.Если вы добавите app.exe.local, перенаправление не будет работать.

Пример 2 : если у вас есть app.exe, у вас есть app.exe.local рядом с ним, и вы запускаетеэто первый раз, позже всегда будет применяться перенаправление.Если вы удалите app.exe.local, он все еще применяет перенаправление.

Я не вижу мотивов для этого запутанного поведения.

Полезно: если вы хотите сбросить кэш для использования exe-файлаперенаправление или нет, вы можете запустить в cmd:

touch app.exe
0 голосов
/ 09 октября 2018

Знаете ли вы, если msftedit.dll загружен с относительным путем?Или проще, просто по имени?То, что вы описываете, соответствует стандартному порядку поиска LoadLibrary.Во-первых, это текущий рабочий каталог.

Я тоже борюсь с локальным перенаправлением.У меня есть 3 ПК, где он работает, и 1, где нет.

...