Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

DLL hell

DLL hell (DLL-ΠΊΠΎΡˆΠΌΠ°Ρ€, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ: DLL-Π°Π΄) β€” тупиковая ситуация, связанная с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ динамичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ DLL Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Microsoft Windows.

Аналогичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ОБ носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Dependency hell.

Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ вСрсий DLL, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. DLL hell β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ программирования, которая, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ скрытой ΠΌΠΈΠ½Π΅, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π΅Π·ΠΊΠΎΠΌΡƒ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ трудностСй ΠΏΡ€ΠΈ услоТнСнии ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΈ систСмы.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ОписаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

По исходному замыслу, DLL Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ совмСстимыми ΠΎΡ‚ вСрсии ΠΊ вСрсии ΠΈ взаимозамСняСмыми Π² ΠΎΠ±Π΅ стороны.

РСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° DLL Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ становится скорСС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Для избСТания ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ мноТСство ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ DLL для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния, Ρ‡Ρ‚ΠΎ сводит Π½Π° Π½Π΅Ρ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ идСю получСния прСимущСства ΠΎΡ‚ DLL ΠΊΠ°ΠΊ стандартных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, хранящихся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² памяти ΠΈ раздСляСмых ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠΏΡ‹Ρ‚Π΅ послС исправлСния ошибок Π² DLL ΠΈΠ»ΠΈ восстановлСния систСмы ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… DLL, носящих ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… Ρ‚Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, возрастаСт, Π° автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ вСрсии ΠΈΠ»ΠΈ исправлСниС ошибок становится Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² Ρ€Π°Π½Π½ΠΈΡ… вСрсиях Microsoft Windows.

Π‘ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии Mac OS X, Π½ΠΎ с использованиСм Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. НС ΠΈΠ·Π±Π΅Π³Π°ΡŽΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ дистрибуторы Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Open Source.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π½Π΅-майкрософтовской срСдС, эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ dependency hell (ΠΊΠΎΡˆΠΌΠ°Ρ€ зависимостСй).

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° постоянно повторяСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅ с Ρ‚ΠΎΠΉ DLL, c ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡ€ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ вСрсий ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠœΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΈΠ² DLL hell

Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ для получСния Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

DLL Hell ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΠΏΡ€ΠΈ этом прилоТСния Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° вСрсия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DLL Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ отличаСтся ΠΎΡ‚ вСрсии, которая использовалась ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DLL Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ встроСнного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² DLL ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ структуру Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсий, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡ… использования ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сбою прилоТСния. БтатичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вСрсия, которая использовалась для сборки прилоТСния, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Π½Π΅Π΅, поэтому Π΄Π°ΠΆΠ΅ Ссли Π±ΠΎΠ»Π΅Π΅ новая вСрсия сущСствуСт Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π² систСмС, это Π½Π΅ влияСт Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ нСсовмСстимости вСрсий являСтся структура Ρ„Π°ΠΉΠ»Π° DLL. Π€Π°ΠΉΠ» содСрТит ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Ρ‚. Π”.), БодСрТащихся Π² DLL, ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚. Π”Π°ΠΆΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΠΊΠΎΠ΄Π΅ DLL ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½ΠΈΡŽ этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΈ Π² этом случаС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, полагая, Ρ‡Ρ‚ΠΎ это 4-ΠΉ элСмСнт Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сбой прилоТСния.

БущСствуСт нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DLL, особСнно послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² систСмС Π±Ρ‹Π»ΠΈ установлСны ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ многочислСнныС прилоТСния. БлоТности Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями DLL, трудности с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… DLL ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ мноТСства Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ DLL.

НСсовмСстимыС вСрсии

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ вСрсия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ совмСстима с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, ΠΈ нСсовмСстима с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Windows Π±Ρ‹Π»Π° особСнно уязвима для этого ΠΈΠ·-Π·Π° Π΅Π΅ ΡƒΠΏΠΎΡ€Π° Π½Π° динамичСскоС связываниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ C ++ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² связывания ΠΈ встраивания (OLE) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠ»Π°ΡΡΡ‹ C ++ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ нСсовмСстимым с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, созданными для Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΉ вСрсии. Для прСдотвращСния этого ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ строгиС ΠΏΡ€Π°Π²ΠΈΠ»Π° связывания ΠΈ встраивания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: интСрфСйсы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ, Π° диспСтчСры памяти Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно. Однако этого нСдостаточно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСмантика класса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибки Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π”ΠΎ Windows 2000 Windows Π±Ρ‹Π»Π° уязвима для этого, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° классов COM использовалась всСми ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ процСссами. Волько ΠΎΠ΄ΠΈΠ½ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΉ DLL / EXE ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ COM-класса Π² систСмС. Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр этого класса, ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ зарСгистрированной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая установила Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ установлСны Ρ€Π°Π½Π΅Π΅.

DLL Ρ‚ΠΎΠΏΠ°Π΅Ρ‚

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ рСгистрация COM

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² памяти

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ работоспособности

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹

ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ DLL Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π°:

DLL Hell Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ распространСнным явлСниСм Π² вСрсиях ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Microsoft Π΄ΠΎ Windows NT, основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ 16-разрядныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈ процСссы своим собствСнным пространством памяти, Ρ‚Π΅ΠΌ самым Π½Π΅ позволяя ΠΈΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ совмСстимы. ОТидалось, Ρ‡Ρ‚ΠΎ установщики ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°ΠΌΠΈ ΠΈ провСрят ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вСрсии DLL ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… систСмных DLL. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ инструмСнты для упрощСния развСртывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ доставку зависимых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DLL ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы) Π±Ρ‹Π»ΠΈ прСдоставлСны Microsoft ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сторонними поставщиками инструмСнтов. Microsoft Π΄Π°ΠΆΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ поставщики ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ использовали стандартный установщик ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки Π±Ρ‹Π»Π° сСртифицирована для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Microsoft. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ «добросовСстного установщика» Π½Π΅ смягчил ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рост популярности Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° прСдоставил большС возмоТностСй для получСния нСсовмСстимых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ИспользованиС врСдоносным ПО

РСшСния

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ DLL-Π°Π΄Π° Π±Ρ‹Π»ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΈΠ»ΠΈ смягчСны Π½Π° протяТСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Π»Π΅Ρ‚.

БтатичСскоС связываниС

Π—Π°Ρ‰ΠΈΡ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Windows

Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ прилоТСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ОБ, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ Π·Π°ΠΊΠΎΠ½Π½Ρ‹Π΅ обновлСния Windows со своим установщиком ΠΈΠ»ΠΈ Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ слуТбу Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Windows Π²ΠΎ врСмя установки, Π° Π² Windows Vista ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²Π° собствСнности Π½Π° систСмныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ сСбС доступ. SFC ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ эти измСнСния Π² любоС врСмя.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ запуск ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… DLL

РСшСния здСсь состоят Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DLL для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния ΠΊΠ°ΠΊ Π½Π° дискС, Ρ‚Π°ΠΊ ΠΈ Π² памяти.

ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ DLL Π² ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Π½Π΅ Π² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΎΠ±Ρ‰Π΅ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ. Π’ Ρ†Π΅Π»ΠΎΠΌ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся 32-разрядным ΠΈΠ»ΠΈ 64-разрядным ΠΈ DLL Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ случаС 16-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π²Π° прилоТСния Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° 16-разрядной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ»ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ 16-разрядной Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Π² 32-разрядной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. OLE ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π»ΠΎ это Π΄ΠΎ Windows 98 SE / 2000, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии Windows ΠΈΠΌΠ΅Π»ΠΈ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ рССстр COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прилоТСния

Π’ зависимости ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ прилоТСния ΠΈ срСды выполнСния пСрСносимыС прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивным способом ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с DLL, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ каТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° связываСт свои собствСнныС частныС ΠΊΠΎΠΏΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… DLL. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ основан Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прилоТСния Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΡƒΡ‚ΠΈ ΠΊ зависимым Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ DLL ΠΏΡ€ΠΈ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Π° опСрационная систСма выполняСт поиск Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎ любого ΠΎΠ±Ρ‰Π΅Π³ΠΎ располоТСния. Однако этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ врСдоносными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнута Π·Π° счСт бСзопасности, Ссли частныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DLL Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ исправлСний бСзопасности Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠ΅.

Виртуализация ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ прилоТСниям Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Β«ΠΏΡƒΠ·Ρ‹Ρ€Π΅Β», Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ установки Ρ„Π°ΠΉΠ»ΠΎΠ² DLL нСпосрСдствСнно Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‹ противодСйствия

Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‹ противодСйствия DLL Hell, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ; Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

. when altering one’s mind becomes as easy as programming a computer, what does it mean to be human.

11 фСвраля 2011 Π³.

DLL, DLL Hell, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ DLL, Side-by-Side сборки ΠΈ манифСсты.

DLL (Dynamic Link Library β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ) β€” понятиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Microsoft Windows ΠΈ IBM OS/2; это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСсколькими прилоТСниями. K DLL относятся Ρ‚Π°ΠΊΠΆΠ΅ элСмСнты управлСния ActiveX ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹. Π’ ΠΌΠΈΡ€Π΅ UNIX Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚.Π½. shared objects («раздСляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹Β»). Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² DLL придСрТиваСтся Ρ‚Π΅Ρ… ΠΆΠ΅ соглашСний, Ρ‡Ρ‚ΠΎ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², сочСтая ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

DLL Hell (DLL-ΠΊΠΎΡˆΠΌΠ°Ρ€, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ: DLL-Π°Π΄) β€” тупиковая ситуация, связанная с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ динамичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ DLL Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Microsoft Windows. Аналогичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² срСдах UNIX носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Dependency Hell. Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ вСрсий DLL, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. По исходному замыслу, DLL Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ совмСстимыми ΠΎΡ‚ вСрсии ΠΊ вСрсии ΠΈ взаимозамСняСмыми Π² ΠΎΠ±Π΅ стороны. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΎΠ΄Π½Π°ΠΊΠΎ оказалось, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этого Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’Ρ‹ устанавливаСтС ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ пСрСстаСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ другая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, казалось Π±Ρ‹, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ связанная с ΠΏΠ΅Ρ€Π²ΠΎΠΉ (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сообщСниС Π²Ρ€ΠΎΠ΄Π΅ «Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°», «Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅» ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΎΠ΅ Π²Ρ€ΠΎΠ΄Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π»Π΅Ρ‚Π° ΠΈΠ»ΠΈ зависания). Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ, Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ для вас, Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ использованиСм ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DLL. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ этих Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии Ρ„Π°ΠΉΠ»Π° MSVCRT.DLL Π² систСмной ΠΏΠ°ΠΏΠΊΠ΅. Или ΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ элСмСнт управлСния ActiveX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΏΡ€ΠΈ этом вторая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстима с этим ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ.

Π Π°Π·Π²Π΅ это ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊΠΎ ΠΌΠ½Π΅?

Windows 2000: ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ DLL

РаньшС ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, какая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»Π°Β», Π° какая β€” Β«ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»Π°Β». Начиная с Windows 2000 появились срСдства, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ эти срСдства ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой лишь Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, позволяя Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ систСму Π² Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ состояниС, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ поиском Π±ΠΎΠ»Π΅Π΅ постоянного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°.

ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DLL Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΡˆΠΌΠ°Ρ€Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DLL, Π½ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ½ΠΎ прСдоставляСт срСдства ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΌΠΎΡ‰ΠΈ для контроля Π½Π°Π΄ ситуациСй Π½Π° врСмя Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. По этой ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ссли Ρ€Π°Π½ΡŒΡˆΠ΅ для установщиков Π±Ρ‹Π»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ: ΠΏΠΈΡˆΠΈΡ‚Π΅ свои DLL Π² систСмныС ΠΏΠ°ΠΏΠΊΠΈ, вСдь Ρ‚ΠΎΠ³Π΄Π° ΠΈΡ… смогут ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. И Π²Ρ‹ сэкономитС Π½Π° рСсурсах! Π’ΠΎ начиная с Windows 2000 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Π΅: рСбята, диск сСгодня ΡƒΠΆΠ΅ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ установщикам слСдуСт Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ DLL Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π”Π°, мСсто Π½Π΅ сэкономитС, Π½ΠΎ Π·Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ, вСдь Π΅Ρ‘ Π½Π΅ коснётся DLL Hell.

Windows XP: ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прилоТСния ΠΈ side-by-side сборки

Начиная с Windows XP Π² вашСм распоряТСнии появляСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ DLL Hell: Isolated Applications ΠΈ Side-by-side Assemblies. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Microsoft Windows для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² вСрсий Π² Windows прилоТСниях. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ трСбования своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ DLL, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ влияния Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² систСмС. ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ использования этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прилоТСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ устойчивы ΠΊ обновлСниям.

Side-by-side сборки ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прилоТСния

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ называСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Ссли всС Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ side-by-side сборками. Если ΠΆΠ΅ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ side-by-side сборками (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ DLL Π±Π΅Π· манифСста), Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ называСтся частично ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ частично ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всё Π΅Ρ‰Ρ‘ уязвимо для DLL Hell. Учитывая, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ сказали ΠΏΡ€ΠΎ «XP Manifest», ΠΌΠ½ΠΎΠ³ΠΈΠ΅ (Ссли Π½Π΅ всС) ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡƒΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частично ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ прилоТСниями, хотя ΠΈ Π² вСсьма ΠΌΠ°Π»ΠΎΠΉ стСпСни.

ΠŸΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌΡ‹Π΅ Windows File Protection (WFP), Π½Π΅ доступны Π² Π²ΠΈΠ΄Π΅ side-by-side сборок ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны вмСстС с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊ частныС сборки.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сборками с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ манифСстов

ΠŸΡ€ΠΎΡ†Π΅ΡΡ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ вСрсии side-by-side сборки. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ 1 side-by-side сборки, Π° вторая загруТаСмая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ вСрсии 2 Ρ‚ΠΎΠΉ ΠΆΠ΅ сборки. Для различСния сборок Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ манифСсты ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсий сборок. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ DLL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ DLL для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚Ρ‹

ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ администраторам ΠΈ прилоТСниям ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вСрсиями side-by-side сборок послС развёртывания прилоТСния. КаТдая side-by-side сборка Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ манифСст, ассоциированный с Π½Π΅ΠΉ. ΠŸΡ€ΠΈ установкС Windows XP ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ side-by-side сборки ΠΎΡ‚ Microsoft вмСстС с ΠΈΡ… манифСстами. Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ваши собствСнныС side-by-side сборки, Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… манифСсты.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ссли Π²Ρ‹ примСняСтС манифСст Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ мСняСтС сам манифСст Π±Π΅Π· измСнСния Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ модуля, Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρƒ измСнСния исполняСмого модуля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ манифСст вступил Π² дСйствиС. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ это ΠΏΠΎ Ρ‚ΠΎΠΉ простой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ Windows ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅/отсутствиС/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ манифСста, Ссли Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ помСнялся. Π­Ρ‚ΠΎ типичная оптимизация частого случая (Ρ„Π°ΠΉΠ» Π½Π΅ мСняСтся).

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π²Ρ‹ установитС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса Π² 1, Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ОБ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ зависимости сборок, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² манифСстС, ΠΊΠ°ΠΊ ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ для всСго процСсса. ВсС Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΆΠ΅ зависимости.

Π’Π°Π±Π»ΠΈΡ†Π° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ОБ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ манифСст с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° рСсурса. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этим процСссом Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ контСкста (Activation Context API), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠŸΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для процСсса?Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ статичСском ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅?Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для EXE?Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для DLL?
1ДаДаДаНСт
2НСтДаДаДа
3НСтНСтДаДа

CREATEPROCESS_MANIFEST_RESOURCE_ID Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прилоТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ.

ISOLATIONAWARE_MANIFEST_RESOURCE_ID ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прилоТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹).

ЧастныС ΠΈ раздСляСмыС сборки

РаздСляСмыС side-by-side сборки ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΡƒ WinSxS. РаздСляСмыС side-by-side сборки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны ΠΏΡ€ΠΈ установкС обновлСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Windows Installer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт ΠΈΠ»ΠΈ обновляСт вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π”ΠΎ Windows XP ΠΎΠ±Ρ‰ΠΈΠ΅ сборки (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ просто DLL) Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ глобально ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² ΠΏΠ°ΠΏΠΊΡƒ System. Π’ этом случаС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π±Ρ‹Π»Π° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдняя установлСнная вСрсия сборки. Side-by-side сборка ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ установлСна ΠΊΠ°ΠΊ частная сборка для эксклюзивного использования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, здСсь ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

ЧастныС сборки ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΡƒ прилоТСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это сама ΠΏΠ°ΠΏΠΊΠ° прилоТСния с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. ЧастныС сборки Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ сборки, ΠΈΠ»ΠΈ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ языка (Ρ‚Π΅ΠΌΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сборок Π½Π΅ рассматриваСтся Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅). НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру ΠΏΠ°ΠΏΠΎΠΊ для размСщСния частной сборки Microsoft.tools.pop Π±Π΅Π· указания языка:

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… стилСй

ΠžΠ±Ρ‰ΠΈΠ΅ элСмСнты управлСния (common controls), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² состав Windows XP, Windows Vista ΠΈ Windows 7, ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, которая называСтся «Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ стилями» (visual styles). Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ элСмСнтов управлСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° настройках внСшнСго Π²ΠΈΠ΄Π° систСмы, измСняСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ стили Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 256-Ρ†Π²Π΅Ρ‚ΠΎΠ².

На рисункС Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠΊΠ½ΠΎ с панСлью Π·Π°Π΄Π°Ρ‡ Π½Π° Windows Vista. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ скомпилировано со стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΎΠ±Ρ‰ΠΈΡ… элСмСнтов управлСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

НовыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (ComCtl32.dll вСрсии 6 ΠΈ UxTheme.dll) доступны Π² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Windows XP ΠΈ Π²Ρ‹ΡˆΠ΅. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ стили. UxTheme.dll ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ComCtl32.dll для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… стилСй. ComCtl32.dll Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ UxTheme.dll Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± элСмСнтах управлСния ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ UxTheme.dll для прорисовки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй элСмСнтов управлСния.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартныС элСмСнты управлСния, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствий для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… стилСй. Если ΠΆΠ΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ элСмСнты управлСния с custom-прорисовкой, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСдоставляСмоС API для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ стилС ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ свои элСмСнты управлСния Π² этом стилС. Π‘ΠΌ. Using Visual Styles with Owner-Drawn Controls.

АвтоматичСскоС использованиС для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ автоматичСский способ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всё Ρ€ΡƒΠΊΠ°ΠΌΠΈ.

ИспользованиС манифСстов для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… стилСй Π² прилоТСниях

ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
versionВСрсия манифСста. ВСрсия прСдставляСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ major.minor.revision.build (Ρ‚.Π΅., n.n.n.n, Π³Π΄Π΅ n assemblyIdentity Π² Π±Π»ΠΎΠΊΠ΅ зависимостСй:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… описаны шаги для примСнСния Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… стилСй Π² прилоТСниях Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отличия манифСстов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС.

ИспользованиС ComCtl32.dll вСрсии 6 Π² прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

ИспользованиС ComCtl32 вСрсии 6 Π² прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ DLL ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ

Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этого Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ манифСст: И Π² RC-Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΠ½ Ρ‚Π°ΠΊ:

ИспользованиС ComCtl32 вСрсии 6 Π² ПанСли управлСния ΠΈΠ»ΠΈ DLL, которая запускаСтся RunDll32.exe

ИспользованиС ComCtl32 вСрсии 6 Π² оснасткС MMC

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: использованиС частных сборок

Ну. Π²ΠΎΡ‚, собствСнно ΠΈ всё. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ DLL (разумССтся, Π΅Ρ‘ имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Alex.Demo.Assembly.dll ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Alex.Demo.Assembly.dll ) ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΠΆΠ΅ Π½Π΅ просто DLL, Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚Π½ΡƒΡŽ сборку.

ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ. Ну, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнилось, Π΄Π°? Π”Π°. Всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² самом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ этой сборки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ эту сборку ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ DLL.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ? Ну, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹, снова Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнится. Однако, ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ DLL грузится ΠΊΠ°ΠΊ сборка. Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² силу Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вСрсионной зависимости.

Как это ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ version ) Π»ΠΈΠ±ΠΎ Π² манифСстС прилоТСния, Π»ΠΈΠ±ΠΎ Π² манифСстС сборки (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ version для Π±Π»ΠΎΠΊΠ° assemblyIdentity с name = Alex.Demo.Assembly ). Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΡƒΡΡ‚ΡŒ ΠΌΡ‹ помСняСм Π½ΠΎΠΌΠ΅Ρ€ самой сборки с 1.0.0.0 Π΄ΠΎ 2.0.0.0. ΠŸΠ΅Ρ€Π΅ΡΠΎΠ±Π΅Ρ€Ρ‘ΠΌ сборку ΠΈ запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Опа. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ DLL:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dll hell

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ сборку Π² Π²ΠΈΠ΄Π΅ СдинствСнной DLL ΠΈ Π½Π°ΠΌ это практичСски Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ стоило. ВсСго Π΄Π΅Π»ΠΎΠ²-Ρ‚ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ манифСст (кстати, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π² ΠΎΠΏΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Delphi Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ «Enable assembly manifest» ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с «Enable visual themes»).

Side-by-Side Π² частных сборках

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: использованиС раздСляСмых сборок

Как это выглядит Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

НачнитС с ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² сборки, манифСста сборки ΠΈ сСртификата, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ сборку. ΠšΠ»ΡŽΡ‡ сСртификата Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 2048 Π±ΠΈΡ‚. Π’Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСртификат, подписанный Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ сСртификации (trusted certificate). Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ сборка Π½Π΅ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для подписи сборок ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ само-подписанныС сСртификаты. ВСроятно, Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСртификат для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ вашСго ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π“ΠΎΡ‚ΠΎΠ²ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Ρ‘.

Windows Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ раздСляСмыС сборки ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Windows Installer (MSI). Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Windows смоТСт ΠΏΠΎΡ‡ΠΈΠ½ΠΈΡ‚ΡŒ сборку, Ссли ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π°.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию Side-by-Side

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ стандартных манифСстов

High DPI awareness: объявлСниС, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² курсС ΠΏΡ€ΠΎ Ρ€Π΅ΠΆΠΈΠΌΡ‹ экрана с высоким DPI

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ виртуализация DPI Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° DPI Π²Ρ‹ΡˆΠ΅ 120 (125%).

Π₯отя Π² Win32 API Π΅ΡΡ‚ΡŒ функция для объявлСния прилоТСния ΠΊΠ°ΠΊ DPI-aware ( SetProcessDPIAware ), Π΅Ρ‘ использованиС Π½Π΅ поощряСтся, ΠΊΡ€ΠΎΠΌΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сцСнариСв. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ манифСст для объявлСния прилоТСния DPI-aware.

UAC: ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ уровня ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ для прилоТСния

Π’ выпускС Windows Vista Π΅ΡΡ‚ΡŒ полоТСния, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄Ρƒ Π±Π΅Π· манифСста ΠΈΠ»ΠΈ нСподписанному ΠΊΠΎΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ административным ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠΌ доступа.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях систСмы СдинствСнным способом для прилоТСния Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ административными привилСгиями Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ подписанного манифСста.

Π’ Windows Vista ΠΈ Π²Ρ‹ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² манифСстС для указания Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ уровня ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ: Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния ΠΈ ΠΈΡ… Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ°:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
asInvokerΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запускаСтся с Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ процСсс.РСкомСндуСтся для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚, ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, Microsoft Word, Delphi, Total Commander.
highestAvailableΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запустится с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ привилСгиями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.РСкомСндуСтся для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ смСшанного Ρ€Π΅ΠΆΠΈΠΌΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: Консоль MMC, Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ рССстра.
requireAdministratorΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всСгда запускаСтся с ΠΏΠΎΠ»Π½Ρ‹ΠΌ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ администратора.РСкомСндуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ администраторов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: установщики ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Бмысл Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ uiAccess :

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
FalseΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π΅ трСбуСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΎΠΌ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ возмоТности accessibility, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ этот Ρ„Π»Π°Π³ Π² False. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ трСбуСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΎΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΊΠ½Π° Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, экранныС ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² True.
TrueΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ контроля интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΎΠΊΠ½Π°ΠΌ с высокими привилСгиями Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС. Π­Ρ‚Π° настройка Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прилоТСниями, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ Assistive Technology.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: прилоТСния с uiAccess Ρ€Π°Π²Π½Ρ‹ΠΌ True Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠΌ мСстС систСмы. БСгодня Ρ‚Π°ΠΊΠΈΠΌΠΈ мСстами ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°ΠΏΠΊΠΈ \Program Files\ ΠΈ \windows\system32\.

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ОБ

ПовСдСниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ вСрсии систСмы. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, написанноС для старой вСрсии систСмы, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ совсСм Π²Π΅Ρ€Π½ΠΎ (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ) Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии систСмы. ΠœΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с UAC. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² Windows 7 Π±Ρ‹Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прилоТСния ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы ΠΊΠ°ΠΊ Π² Windows XP (Ссли Π² манифСстС Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈΠ»ΠΈ совмСстимости с ОБ) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π² Windows Vista (Ссли Π² манифСстС ΡƒΠΊΠ°Π·Π°Π½Π° информация ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈΠ»ΠΈ Π·Π°Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Windows Vista). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π² Windows 7 (Π±Π΅Π· эмуляции), ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ это явно.

Бписок ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ для Windows 7 ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Windows Vista ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ MSDN Windows 7 / Application Manifests. Бписок для Windows 8/8.1 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Windows Compatibility Cookbook.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всё вмСстС

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΡΡ‚Π°Ρ‚ΠΈ говоря, Ссли Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ поискС/Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ сборок Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки sxstrace ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΡ… Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *