Как работает "режим совместимости" в Windows?

26
задан ulrichb
14.12.2022 5:18 Количество просмотров материала 3466
Распечатать страницу

4 ответа

режим совместимости достигается с помощью так называемых проставок. Есть хороший статья о TechNet описание того, как они работают.

файлы приложений Windows содержат таблицу импорта, которая сообщает загрузчику приложений, какие библиотеки DLL необходимы приложению и какие функции оно использует из них. Например, процесс может ссылаться на GetVersionEx на kernel32.dll. Когда программа должна работать в режиме совместимости, то оболочка совместимости помещается между приложением и оболочкой совместимости заменяет the GetVersionEx функция, так что приложение не вызывает GetVersionEx с kernel32.dll но GetVersionEx в Клин. Затем функции оболочки совместимости реализуют поведение предыдущих версий Windows. GetVersionEx Это простой пример, каждая версия Windows возвращает свои собственные номера версий в GetVersionEx, поэтому когда симулируют старые окна то GetVersionEx функция теперь не возвращает номера версий Windows 7, но, например, номера версий Windows XP. Таким образом, приложение будет считать, что он работает на Windows XP.

там также были некоторые другие изменения от версии Windows к версии Windows. В старых версиях например, если программа загрузки DLL, путь поиска DLL также включены в текущий каталог. Это вопрос безопасности, поэтому новые версии Windows по умолчанию не выполнять поиск в текущем каталоге. С правильной прокладкой вы можете имитировать старое поведение.

с проставками просто прослойка между приложением и API-интерфейса Windows прокладку можно просто делать что приложение может сделать само. Оболочка не может быть использовано, например, для обхода UAC или доступ к защищенным файлам.

если вы хотите узнать больше, вот несколько ссылок, которые могут вас заинтересовать:

особенно Microsoft Application Compatibility Toolkit стоит посмотреть. Это средство дает обзор приложений с известными проблемами, всех доступных исправлений совместимости и режимов и какие исправления применяются к каждому приложению.

26
отвечен Werner Henze 2022-12-15 13:06

Я думаю, что происходит много разных вещей. Простой пример: программа может проверить вашу версию windows, но может запутаться в возвращаемом значении новой операционной системы. Таким образом, использование режима совместимости скажет windows сообщить неправильную версию. Раймонд Чен упоминает еще кое-что: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590

6
отвечен akid 2022-12-15 15:23

мое знание режима совместимости заключается в том, что он вызывает несколько системных вызовов Windows в программу.

одним из очевидных примеров являются функции GetVersionEx и GetVersion какой отчет указанная версия Windows вместо реальной.

пути к файлам старого стиля также автоматически переводятся при работе программы в режиме совместимости относится к файлу в хорошо известных системных папках. Например C:\Documents and Settings переведен на C:\Users\<user>\Documents при работе на Windows 7 программа работает в режиме совместимости с XP.

2
отвечен harrymc 2022-12-15 17:40

эта статья делает хорошую работу, объясняя это.

http://arstechnica.com/information-technology/2010/01/windows-xp-mode/

с Windows 7, однако, Редмонд предоставил решение проблемы: Windows XP Mode. В режиме Windows XP используется технология виртуализации, позволяющая приложениям, работающим в виртуализированной копии Windows XP, отображаться в меню "Пуск" Windows 7 и на рабочем столе Windows 7.

-5
отвечен whoacowboy 2022-12-15 19:57

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх