Безопасно / практично ли обновлять shell32.dll вручную в Windows XP? - PullRequest
1 голос
/ 12 сентября 2011

Я использую среду разработки Windows XP.Мне нужен доступ к функции SHGetKnownFolderPath.Моя команда предлагает, чтобы я просто обновил свои shell32.dll своими файлами и обновил заголовочные файлы.

Функция задокументирована здесь: http://msdn.microsoft.com/en-us/library/bb762188%28v=vs.85%29.aspx

Теперь, поймите, что этот вопрос сосредоточен нана жизнеспособность переопределения / обновления shell32.dll вручную через copy-paste.Пожалуйста, не отвечайте с обходными путями / альтернативами функции, упомянутой выше.Не в этом вопрос.

Безопасно ли просто взять версию shell32.dll для Windows 7 и вставить поверх моей (в XP)?Я боюсь проверить это из-за страха убить всю мою операционную систему.Я не знаю всех взаимозависимостей библиотек Windows и того, будет ли это вообще совместимо.Звучит невероятно нестабильно, но я предлагаю именно это.

Ответы [ 6 ]

5 голосов
/ 12 сентября 2011

Вы не должны изменять Windows DLL вручную.Windows 7 DLL будет иметь зависимости, которые не разрешаются в XP.Даже если это сработало (очень маловероятно), в следующий раз, когда вы установите исправление из Центра обновления Windows, оно может сломаться из-за зависимостей или заменить библиотеку Windows 7 обратно на версию XP.

ОБНОВЛЕНИЕ: Это просто не будет работать,Windows 7 DLL имеет зависимости от наборов API, которых не было в XP.

4 голосов
/ 12 сентября 2011
  1. Копирование dll вручную с помощью copy-paste не будет работать, потому что WFP сработает и восстановит исходную dll. IIRC только обновления с цифровой подписью от Microsoft разрешено заменять системные библиотеки DLL на работающей системе, чтобы избежать подобных ошибок. Вам следует заменить файл в автономном режиме (например, из другой копии Windows / BartPE / Linux / ...) или каким-либо образом отключить / обойти WFP. Так что это не практично.

  2. Взятие системной dll из другой версии Windows и копирование ее туда кажется ужасной идеей. Оболочка изменила много с Windows XP на Windows 7, я уверен, что будет много отсутствующих зависимостей. Даже если вам удастся скопировать каждый файл оболочки Windows 7 в Windows XP, эти файлы будут зависеть от новых функций user32 / gdi32 / ntdll / ..., добавленных в Vista и 7, поэтому он все равно не будет работать.

  3. Итак, я думаю, что наиболее вероятным последствием замены shell32.dll будет сбой загрузки практически любого неосновного компонента ОС: сбой при загрузке shell32.dll из-за отсутствия зависимостей, практически любого графического интерфейса пользователя исполняемый файл, который ссылается на него, не запускается. Итак, это небезопасно.

  4. Помимо проблем с технической точки зрения, я сильно подозреваю, что это также незаконно. Наличие лицензии как для Windows XP, так и для Windows 7 не помогло бы, я думаю, что это считается «модификацией программного продукта», что явно запрещено Microsoft EULA. Итак, это не законно.

  5. Если вам нужна обратная совместимость с XP, просто используйте SHGetFolderPath вместо всего этого беспорядка.

3 голосов
/ 12 сентября 2011

Безопасно / практично ли вручную обновлять shell32.dll в Windows XP?

Нет.

2 голосов
/ 12 сентября 2011

shell32.dll - основной файл операционной системы. Я ожидаю, что за исключением других зависимостей под версией Windows 7 у вас будут неожиданные варианты поведения. Было бы лучше протестировать в виртуальной машине полную среду Windows 7, а не копировать часть другой версии операционной системы.

Большие вопросы. Как вы думаете, кто-нибудь из Microsoft проверял именно эту комбинацию? Если у вас возникнут проблемы и вы обратитесь в службу поддержки, считаете ли вы, что ваша конфигурация поддерживается вашими усилиями? Поработав в прошлом на MSFT, я думаю, что ответ на оба вопроса, скорее всего, нет.

0 голосов
/ 20 января 2012

Я так не думаю ... Но если все еще хотите попробовать, тогда я предлагаю вам установить виртуальную машину и попробовать ее там.так намного безопаснее.

0 голосов
/ 12 сентября 2011

Вероятно, они знают, что говорят.В любом случае, я бы посоветовал вам создать точку восстановления системы и, на всякий случай, загрузить минимальный дистрибутив Linux, чтобы в крайних случаях (то есть, окна не загружались) вы просто восстановили их shell32.dll вместе с вашим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...