Оригиналът е на Erik Jälevik Даниел Десподов преди 45 секунди

...
Оригиналът е на Erik Jälevik Даниел Десподов преди 45 секунди
Коментари Харесай

Странният свят на файловите пътища в ОС Windows

Оригиналът е на Erik Jälevik

Даниел Десподов преди 45 секунди 1 Сподели

Най-четени

IT НовиниЕмил Василев - 18:30 | 18.05.2023

Бъдещето на образованието – под въпрос: Преподавател скъса цялостен клас поради потреблението на ChatGPT

АвтомобилиИван Давидов - 21:11 | 18.05.2023

Кои са 16-те най-икономични и здрави SUV-та съгласно Consumer Reports?

IT НовиниЕмил Василев - 13:30 | 18.05.2023

YouTube вкарва 30-секундни реклами без опция за пропускане и реклами при пауза при тв приемниците

Даниел Десподовhttps://www.kaldata.com/Новинар. Увличам се от модерни технологии, осведомителна сигурност, спорт, просвета и изкуствен интелект.

Пътищата на файловите системи в операционната система Windows са по-странни, в сравнение с бихте си помислили. Във всяка система, произхождаща от Unix, пътищата са изненадващо елементарни: в случай че нещо стартира с /, то е път. Но нещата са напълно разнообразни при Windows, където има зашеметяващо многообразие от схеми за основаване на файловите пътища.

Когато преди време осъществих функционалността за автоматизирано дотъкмяване на файловия път във Fileside 1.7, трябваше да проуча този проблем по-отблизо, с цел да не пропусна нещо. В тази публикация ще опиша за моите открития.

Струва си да се означи, че публикацията е лимитирана до типа пътища, които вижда потребителят в приложенията на Windows (управлявани от Win32 API). Под този пласт има още по-любопитни неща, засягащи най-много тези, които пишат драйвери за хардуер и други сходни.

Съвсем в резюме

Форматите на безспорните пътища
Наименование Примери Път до диск C:Program FilesHAL 9000 UNC-път \MediaPicturesWorth1000 words Път до устройство (буквален) \?D:PlansMarshall Път до устройство (нормализиран \.D:ProjectsHuman Genome
Форматите на относителните пътища
Наименование примери Относителни към настоящата папка.Manhattan, ..Plans Относителен към настоящия диск Pacts Относителен към настоящата директория на диска D:Warsaw
Забранени знаци
Символи Валидност < > ” / |? * Никога не се позволяват. не се позволява като финален знак: Не се позволява, като се изключи поток от данни
Ограничения в дължината
Елемент Максимална дължина Път 32767 (или 260) признака Име на файл или на папки 255 признака

Схема на пътищата при Оценка за съвместимост Windows

В Оценка за съвместимост Windows има три разнообразни вида безспорен път и три разнообразни вида условен път.

Абсолютни пътища

Абсолютните или цялостните пътища са цялостни приключени пътища, които сами по себе си еднопосочно разпознават обещано място във файловата система.

Пътища до дисковете

Пътищата до дисковете са старите положителни пътища, които добре познаваме и обичаме, които се състоят от буквата на диска и директория или поредност от папки:

D:Doughnut preferencesWith jam in
UNC пътищата

UNC е редуциране от Universal Naming Convention (Универсална спогодба за именуване) и съставлява изложение на файл, започващо с \, което постоянно се употребява за обозначаване на мрежови дискове. Първият сегмент след \ е хостът, който може да бъде или име на сървър, или IP адрес:

\WorkHard \192.168.1.15Hard

Но UNC пътищата могат да се употребяват и за достъп до локалните дискове:

\localhostC$UsersAndrew Fletcher \127.0.0.1C$UsersAlan Wilder

А може да се употребява и името на съответния компютър:

\PipelineC$UsersMartin Gore

Символът Щатски долар в C$ значи скрита административна споделена папка; той не замества двоеточието до името на устройството „:„. Споделените дискове в жанр C$ са просто комфортни директни пътища, които се основават автоматизирано от Windows. Можете да получите достъп до дисковете посредством тях единствено в случай че сте влезнали в системата като админ.

Заслужава да се означи също, че самият Pipeline не удостоверява пътя до досието, а единствено разпознава сървъра. За да получите достъп до досието, би трябвало да добавите името на споделената директория.

Пътищата до устройствата

Пътят към обещано устройство стартира с един от следните фрагменти:

\? \.

Освен за файлове и папки те могат да бъдат употребявани за адресирането на физически устройства (дискове, принтери, екрани и т.н.). Никак не наподобява на това, което използваме в всекидневието при работа с файловете, само че е потребно да се знае, в случай че някъде срещнете нещо сходно.

Синтаксисът до местна директория може да стане посредством един от следните разновидности:

\?Z:AnimalsCute \.Z:AnimalsCunning

Ако имате потребност от още спомагателна тайнственост, вместо елементарния Z: можете да поставите идентификатора на устройството:

\?Volume{59e01a55-88c5-411f-bf0b-92820bdb2548}AnimalsCryptic

Тук Volume{59e01a55-88c5-411e-bf0a-92820bdb2549} е идентификаторът на дисковия дял, който се намира в диска Z: на този компютър.

И още, има специфичен синтаксис за разказване на UNC пътищата до обещано устройство:

\?UNClocalhostZ$AnimalsCurious

В пътищата до устройството частта, която следва след \? или \.  е име, несъмнено във вътрешното пространство на имената Object Manager на Windows. На който му е забавно да изследва това пространство, може да изтегли помощната стратегия WinObj и да прегледа тези чудеса.

Нормализираните и литералните пътища до устройствата

Каква в действителност е разликата сред \? и \.?

Обикновено, когато подадете път на операционната система Windows, тя го прочиства, преди да го употребява. Този развой се назовава нормализация и по-долу ще разкажем повече за него.

Пътят \? пропуща този стадий на пречистване, а \. не го пропуща. Ето за какво можем да наименуван пътищата от вида \? литерални пътища до устройствата, а \.  – нормализирани пътища до устройствата.

Да допуснем, че по някаква незнайна причина имате файл с невероятното име „.. “ (например, може да е основан на мрежово устройство в напълно друга система). Обикновено не бихте могли да получите достъп до него, защото нормализацията го преобразува в родителската директория, само че с помощта на дословния (литерален) път до устройството това може да се направи.

Относителните пътища

Относителните пътища са непълни пътища, които за задаване на неповторимата идентификация на местоположението би трябвало да бъдат комбинирани с други пътища.

Пътища, относителни към настоящата директория

Тези пътища употребява в качеството на начална точка настоящата директория. Така да вземем за пример.Torquay се отнася до подпапката на настоящата директория, а..Wales се отнася до подпапката на родителя на настоящата директория.

Папки, относителни по отношение на корена на настоящия диск

Ако пътят стартира със признака, то той автоматизирано се интерпретира като корена н настоящия диск. Така да вземем за пример, в случай че се намирате в диска Е: и въведете Africa, то ще се окажете в

Папки, относителни по отношение на корена на настоящия диск

Ако пътят стартира със признака, то той автоматизирано се интерпретира като корена н настоящия диск. Така да вземем за пример, в случай че се намирате в диска Е: и въведете Africa, то ще се окажете в E:Africa.

Но когато достъпът до настоящата директория се прави посредством UNC път, то пътят, условен към настоящия диск с интерпретира релативно общата коренова директория, като да вземем за пример \EarthAsia

Пътищата, относителни към настоящата директория на диска

Тези доста по-рядко употребявани пътища указват дисковете без противоположната наклонена линия, като да вземем за пример E:Kreuzberg и се интерпретират релативно настоящата директория на това запаметяващо устройство. Всъщност това има смисъл единствено в подтекста на средата на командния ред, която следи настоящата работна директория на всеки диск.

Това е единственият вид пътища, който не се поддържа от моята стратегия Fileside, тъй като няма информация за настоящата директория на всеки диск.

Нормализацията

Както към този момент споменахме, всички пътища, като се изключи литералните, преди потребление минават развой на нормализация. Той се състои от следните няколко стадия:

Замяна на наклонените черти (/) с назад наклонени черти () Свиване на повтарящите се разделители във тип на назад наклонени черти до единствено един разделител Обработка на относителните пътища посредством подмяна на всички. или.. Премахване на спейсовете и точките в края

По този метод, единствено в общия случай в Оценка за съвместимост Windows могат да се указват пътища благодарение на елементарни наклонени черти.

Правилата на наименованията в Оценка за съвместимост Windows

Нека в този момент да разгледаме обособените детайли, от които е формиран всеки от тези пътища. Има голям брой ограничавания в имената, които могат да бъдат употребявани като имена на файлове и папки.

Забранени знаци

В имената не е позволено да се употребяват следните знаци:

< > " / |? *

Също по този начин не могат да се употребяват непечатимите знаци с ASCII код, по-малък от 32

Хитрото двоеточие

В множеството случаи потреблението на признака: е неразрешено.

Но има едно доста екзотично изключение във типа на променените потоци данни на файловата система NTFS, при които двоеточието се употребява като разделител сред имената. Не е изключително известно, че в някои контекстни случаи е допустимо вътре във файла да се запише прикрит откъс от данни, добавяйки към неговото име постфикс, предшестван точно като двоеточие.

Опасната точка

Символът. е позволен във вътрешността или при започване на името на файла, само че е неразрешено да се слага в края

Сепейсове първоначално и края

Интересно е, че Windows позволява наличето на спейсове при започване на имената, само че не и в техния край. Тъй като едно име със спейсове първоначално и в край наподобява напълно по един и същи метод като име без никакви спейсове, нормално това е една в действителност ужасна концепция. Ето за какво програмата Fileside  автоматизирано ги отстранява.

Забранените имена

По исторически аргументи не могат да се употребяват следните имена:

CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9.

Това включва и имената с разширения. Така да вземем за пример, в случай че създадете файл с име COM1.txt, то операционната система ще го преобразува в \.COM1 и Windows ще го интерпретира като устройство. Едва ли бихте желали нещо сходно.

Чувствителност към регистъра

В множеството случаи Windows не прави разлика сред основни и дребни букви.

C:Polish hamlet, c:polish Hamlet, C:Polish Hamlet и C:POliSh hAMlETсе смятат за безусловно идентични.

Но с обновяването на Windows 10 от месец април 2018 година файловата система NTFS към този момент има алтернатива за включване на чувствителността към регистъра, след което тази Оценка за съвместимост стартира да прави разлика в имената с основни и дребни букви.

Ограничения в дължината

Все още не сме завършили. Има ограничавания и в дължината.

Пътищата

Традиционно дължината на пътищата в Оценка за съвместимост Windows не можеше да надвишава 260 признака. Дори и през днешния ден това важи за някои приложения, в които разработчиците не са взели ограничения да заобиколят това ограничаване.

Това заобикаляне се реализира посредством преобразуването на всякога в литерален път към хипотетично устройство преди той да бъде подаден на Windows. По този метод ограничаването от 260 признака престава да важи и дължината на пътя може да бъде много великодушните 32767 признака.

Имената

Имената на файловете и досиетата не могат да бъдат по-дълги от 255 признака.

Толкова доста способи да кажеш едно и също

Въоръжени с тези познания разбираме, че можем да създадем на процедура безграничен брой разнообразни пътища, които ще указват една и съща директория.

Ето няколко образеца:

C:CHAMELEON c:chameleon C:/\//\///Chameleon C:Windows..Users..Chameleon \localhostC$Chameleon \127.0.0.1C$Chameleon \?C:Chameleon \.C:Chameleon \.UNClocalhostC$Chameleon \?Volume{59e01a55-88c5-411e-bf0a-92820bdb2549}Chameleon \.GLOBALROOTDeviceHarddiskVolume4Chameleon и по този начин нататък

Ето какво се получава, когато се постанова да се обезпечи цялостната противоположна съгласуемост в продължение на няколко десетилетия!

Тази публикация събра голям брой мнения. Редица консуматори обърнаха внимание, че на процедура същият legacy зоопарк може да се види и в macOS, която би трябвало да е изцяло съвместима с доста остарялата класическа MacOS. Но това е тематика за различен бъдеш материал.

Източник: kaldata.com

СПОДЕЛИ СТАТИЯТА


Промоции

КОМЕНТАРИ
НАПИШИ КОМЕНТАР