Довга історія системних папок microsoft windows

Разом з автором цієї невеликої статті ми зробимо екскурсію по каталогам, в імені яких міститься слово «system». А почнемо з того, що давним-давно, ще за часів 16-розрядної Windows, коли все було просто і зрозуміло, жив та був каталог по імені C: Windows System ...

З появою Win32 виник другий системний каталог, який отримав назву C: Windows System32. У ньому зберігалися 32-розрядні системні файли, а 16-розрядні залишилися в старому системному каталозі. Pа одним винятком - в Windows 95 і 32-розрядні, і 16-розрядні системні файли «жили» в одному каталозі, зберіг своє старе ім`я C: Windows System. Сказане далі ніякого відношення до Windows 95 не матиме.

Відео: Як правильно очистити місце на системному диску Windows (C :) і нічого не зламати (від Ігоря Шаститко)

Пакетні файли виконували програми з каталогу C: Windows System32, припускаючи, що розрядність програми відповідає розрядності операційної системи. Це було неявне припущення, але воно малося на увазі по самій природі відбувається. Якби каталог System32 містив тільки 32-розрядні програми, то пакетний файл, що запускає програму C: Windows System32 REG .EXE для модифікації параметрів реєстру, виконував би 32-розрядної версії REG.EXE, змінюючи таким чином 32-розрядну імітацію реєстру , а не реальну 64-розрядну версію. З іншими типами файлів зі сценаріями (наприклад, з REG-файлами) виникала б така ж проблема.




Є маса 32-розрядних програм, в яких в коді «зашито» звернення до каталогу System32, а не до функції GetSystemDirectory. Після перекомпіляції цих програм для роботи в 64-розрядної Windows вони все одно в пошуках 64-розрядних файлів будуть звертатися до каталогу System32. Шляхи, зазначені в конфігураційних файлах або реєстрі, повинні бути «зрозумілими» як 32-, так і 64-розрядних процесів і при цьому посилатися на той чи інший каталог в залежності від «розрядності» викликає програми.

Відео: Очищаємо диск за допомогою поновлення Windows 7

Річ ясна, що справа темна ..

Щоб вибратися з цієї заплутаної ситуації, в команді розробників Windows вирішили, що в 64-розрядної системі каталог System32 буде містити 64-розрядні файли, а на 32-розрядної - 32-розрядні ж файли. Число «32» - всього лише частина імені і нічого не означає. Це схоже на «DVD» - це тільки ім`я і насправді нікого цікавить, як воно розшифровується і розшифровується взагалі. А скільки великих компаній офіційно поміняли назву на послідовності символів, які раніше щось означали, але тепер втратили первісний зміст - HSBC, KFC, BP або KPMG.




Перенаправлення в файлової системі для 32-розрядних процесів додає ще один рівень складності до цієї та так вже сильно заплутаній історії. Коли 32-розрядний процес звертається до каталогу C: Windows System32в 64-розрядної системі, він перенаправляється в каталог C: Windows SysWOW64, де власне і зберігаються 32-розрядні системні DLL-бібліотеки.

В результаті System32 слід вважати трохи дивним маємо для каталогу, де зберігаються DLL-бібліотеки тієї ж розрядності, що і додаток, що звертається до тієї папки. У більш ідеальному світі щось подібне назвали б, наприклад, каталогом SysExec, тому що саме в такому каталозі розміщувалися б файли розрядності, відповідному середовищі виконання.

... але це не кінець історії!

Що, якщо треба звернутися до реального 64-розрядному системному каталогу з 32-розрядної процесу? Механізм перенаправлення в файлової системі звернення до каталогу C: Windows System32переадресует в каталог C: Windows SysWOW64. Можна в програмі використовувати функції з незграбними назвами типу Wow64DisableWow64FsRedirection, але це відключить перенаправлення для всіх операцій, поки його знову не включать. Це створює незручності, коли треба зробити щось більш складне, ніж відкриття одного файлу. При виконанні складної операції це може привести до звернення до багатьох файлів одночасно або створення робочих потоків.

На цьому наша екскурсія по каталогам, що містить слово «system», закінчується. Якщо ви все ще плутаєтеся, просто пам`ятайте, що функція каталогу рідко відповідає його імені.


Поділися в соц. мережах:

По темі: