Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2016, 22:26   #1
12345qwerty12345
Пользователь
 
Регистрация: 19.03.2016
Сообщений: 77
По умолчанию Обход ограничения в 255 символов на длину пути к файлу или папке

В теории ограничение на длину имени файла или папки в NTFS составляет 255 символов, но на практике Windows API ограничивает до 244 символов (максимум который мне удалось создать).
В теории ограничение на длину пути к файлу или папке в NTFS составляет 32767 символов, но на практике Windows API ограничивает до 245 символов (максимум который мне удалось создать).

Как видно из прикрепленных файлов весь корень зла не в файловой системе а в Windows API.
Если ограничение на длину имени файла или папки в Windows API на практике в 244 символа меня вполне устраивает, то ограничение на длину пути к файлу или к папке в Windows API на практике в 245 символов ни меня ни большинсто пользователей никак не устраивает.

У меня риторический вопрос к программистам :
Можно ли внести самодельные изменения в Windows API после включения "Службы активации Windows" со всеми тремя ее субкомпонентами («Интерфейсы API настройки», «Модель процесса», «Среда .NET Environment») через "Компоненты Windows" в «Программы и компоненты» панели управления ??? Если возможно то как конкретно ???

Если у кого-то есть конкретные предложеня по поводу "службы активации" и самодельной правки "Windows API" прошу писать мне на почту alex-alex@intelservis.com. Убедительная просьба не раздражать предложениями типа "укоротите имена", "юзайте файловые менеджеры" и "юзайте коммандную строку с символами \\?\Путь". Никто юзать ни файловые менеджеры ни коммандную стоку не собирается, только проводник в графическом интерфейсе. Предложения в стиле «укоротите имена» вообще не рассматриваютя, там и так уже все срезано по максимуму. Жду конкретные предложения по сути вопроса на свою почту.
Изображения
Тип файла: jpg СЛУЖБА АКТИВАЦИИ WINDOWS.jpg (29.8 Кб, 420 просмотров)
Тип файла: jpg СЛУЖБА АКТИВАЦИИ WINDOWS (1).jpg (39.2 Кб, 149 просмотров)
Тип файла: jpg СЛУЖБА АКТИВАЦИИ WINDOWS (2).jpg (39.0 Кб, 148 просмотров)
Тип файла: jpg СЛУЖБА АКТИВАЦИИ WINDOWS (3).jpg (48.4 Кб, 135 просмотров)
Вложения
Тип файла: zip ОГРАНИЧЕНИЯ В ФАЙЛОВЫХ СИСТЕМАХ.zip (185.3 Кб, 37 просмотров)
Тип файла: zip СОЗДАНИЕ ФАЙЛОВ С НЕКОРРЕКТНЫМИ ИМЕНАМИ В FAT32 И NTFS.zip (151.0 Кб, 31 просмотров)
12345qwerty12345 вне форума Ответить с цитированием
Старый 19.03.2016, 22:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Как связана служба активации винды и ваш вопрос про длину пути? Если не нравится ограничания юзайте, не нравившиеся вам, пути с \\?\
p51x вне форума Ответить с цитированием
Старый 19.03.2016, 22:50   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
только проводник в графическом интерфейсе.
что я делал не так?
Изображения
Тип файла: gif folder.gif (33.5 Кб, 400 просмотров)
f.hump вне форума Ответить с цитированием
Старый 19.03.2016, 23:18   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Не юзаете проводник от вин 3.1...
p51x вне форума Ответить с цитированием
Старый 20.03.2016, 09:29   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от 12345qwerty12345 Посмотреть сообщение
Как видно из прикрепленных файлов весь корень зла не в файловой системе а в Windows API.
В Windows API таких проблем нет.
"Проводник" != "Windows API", то, что проводник чего-то не умеет это не значит, что опреационка этого не может.

Далее, в вашем конкретном случае, раз вам обязательно нужно использовать проводник то ваше единственное решение это писать плагин для проводника, правда и это не совсем поможет но может обойти проблему, укорачивая пути на уровне проводника.

Последний раз редактировалось waleri; 20.03.2016 в 09:33.
waleri вне форума Ответить с цитированием
Старый 20.03.2016, 09:32   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
что я делал не так?
Вообще-то вы не поняли сути проблемы.
Проблема в том, что проводник не умеет работать с а) очень большим количеством вложенных папок с длинными именами и б) с файлами содержащими странные Юникод символы.
Самим проводником вы проблему не воспроизведете, но вот внешние программы вполне себе могут создать ситуацию, с которой проводник справится не сможет.
waleri вне форума Ответить с цитированием
Старый 20.03.2016, 10:56   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
а) очень большим количеством вложенных папок с длинными именами
Почему я наблюдаю другое? У меня есть файл с длинным названием, он лежит в папке с длинным названием, и т.д. некоторые файловые менеджеры давятся, а вот проводник все находит и открывает...

Цитата:
с файлами содержащими странные Юникод символы
Давайте скрин. У меня на компе частые гости фалы с китайскими/японскими/корейскими/... символами и почему-то все работает. Да у проводника есть проблемы с некоторыми именам, но это больше наследие легаси.
p51x вне форума Ответить с цитированием
Старый 20.03.2016, 11:21   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Почему я наблюдаю другое?
Потому что вы делали ваши папки самим проводником.
еxplorer.exe / cmd.exe не позволят вам создать иерархию, с которой они не смогут работать. Хотя насчет cmd.exe не уверен - ограничение можно обойти воспользовавшись короткими именами.


Цитата:
Сообщение от p51x Посмотреть сообщение
Давайте скрин. У меня на компе частые гости фалы с китайскими/японскими/корейскими/... символами и почему-то все работает.
Потому что китайские / японские / корейские символы - не самые странные символы юникода. Впрочем по этому пункту я спорить не буду - у меня ситуация была "длинные имена + странные символы" и проводник с этим не справился. Я не углублялся в изучении почему именно, факт тот, что API это позволяла сделать а проводник нет.

Цитата:
Сообщение от p51x Посмотреть сообщение
Да у проводника есть проблемы с некоторыми именам, но это больше наследие легаси.
Да я с этим как бы и не спорю... А потребителю какая разница? Насчет того почему у проводника проблемы я ничего не говорил, я только отметил факт, что у проводника проблемы, связанные с длиной имен и нестандартными символами.
waleri вне форума Ответить с цитированием
Старый 20.03.2016, 11:27   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так автор же хочет и создавать длинные пути в проводнике, а не только смотреть.

Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.03.2016, 12:58   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Блин, хотел понатыкать длиннопост по сабжу экрана на 3.
Передумал.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись слова в список с условием ограничения на его длину emdroof C# (си шарп) 1 09.03.2013 22:39
Отслеживание обращений к файлу или папке (C++) Аня_Ф Помощь студентам 6 02.10.2012 21:05
как посчитать длину пути? lisa007x Помощь студентам 0 30.09.2010 11:36
Функция CallWndProc. Получить путь к папке или файлу к которому преднозначено сообщение Irat Помощь студентам 1 16.02.2008 23:36