Страница 1 из 44

NTLinks + NTLinksMaker: создание и инфо о ссылках NTFS

Добавлено: Чт апр 01, 2010 20:28
MVV
NTLinks - модуль для получения информации о точках переподключения, таких как точки соединения/монтирования и символические ссылки, а также о файловых жестких ссылках.

NTLinksMaker - утилита для создания всех типов NTFS-ссылок.

Информация о последней версии

Версия: 1.6.0.254 32/64
URL: NTLinks на wincmd.ru / NTLinks на totalcmd.net

Версия: 1.4.1.416 32/64
URL: NTLinksMaker на wincmd.ru / NTLinksMaker на totalcmd.net

Требования: Windows 2000 и выше, Total Commander :)


Особенности NTLinks:

+ получение индексов файлов, количества жестких ссылок и путей к ним
+ получение пути целевого объекта ссылок и реального пути объектов
+ поддержка символических ссылок, появившихся в Windows Vista/7
+ чтение/запись пути к целевому объекту для символических ссылок и точек соединения
+ сверхбыстрое сравнение жестких ссылок (в пределах одного логического диска)
+ поддержка Юникода и длинных путей

Особенности NTLinksMaker:

+ создание точек соединения, жестких ссылок, а также символических ссылок
+ возможность дублирования нескольких уровней каталогов обычными каталогами
+ возможность сохранения иерархии каталогов (для объектов из разных каталогов)
+ запрос повышения для операций, требующих прав администратора
+ возможность работы без отображения диалоговых окон
+ поддержка Юникода и длинных путей



Возвращаемые модулем NTLinks поля:
+ число жестких ссылок
+ индекс файла в файловой системе (для поиска жестких дубликатов)
+ тип объекта (файл, каталог или тип точки переподключения)
+ целевой объект, на который указывает точка переподключения
+ доступность целевого объекта
+ реальный путь любого файла/каталога в системе (раскрываются все ссылки в пути)
+ реальный размер файла (в случае символической ссылки на файл)
+ пути к жестким ссылкам
+ сравнение по индексам (из диалога синхронизации)

Для целевого объекта и реального пути возможны два варианта отображения - обычный и символьный, в котором точки монтирования остаются в виде уникальных идентификаторов, а не раскрываются в пути, также относительные пути символических ссылок отображаются в исходном виде. Каждое поле возвращает строку в Unicode, если используется ТК 7.50 и старше, и ANSI для старых версий.

Добавлено: Чт апр 01, 2010 20:51
MVV
GGS писал(а):Имеем WinXP SP3; TC 7.55b1; NTLinks 1.0.0.56

Вот связка Unicode - Панель результатов поиска - NTLinks

Изображение

Понимаю, что дело в Unicode, но кто виноват, кого "пинать"?
В обычной панели TC индексы NTLinks видны.
Начинается... И NTLinks тебе в Unicode перевести? :D
Ладно, на днях сделаем.

Хотя, возможно ты и прав, если в обычной индексы видны, а в поиска - нет (причем, только для Unicode-имен), то судя по всему виноват ТК. Но в Юникод NTLinks все равно переведу.

Картинку не убирай свою, я запостю на офсайт багрепорт и дам ссылку на нее. Может, Гислер разберется.

Кстати, наблюдение - в обычной панели моя NTLinks показывает в графе Реальный путь имена в DOS-формате - видимо, в этом и дело - когда имя дают в DOS-формате, NTLinks находит файл, но если имя длинное - что видно в панели поиска - найти его не удается, так как оно содержит символы разных кодовых страниц.

Добавлено: Чт апр 01, 2010 20:51
GGS
MVV
Обратите внимание, что в колонке "Реальный путь" имена оказались без Unicode.

P.S. Синхронно запостили :D

Добавлено: Чт апр 01, 2010 20:56
MVV
Скорее всего, ТК передает модулям, не поддерживающим Юникод, имена с символами из разных кодовых страниц в коротком формате - это позволяет им находить файлы, но видимо в панели поиска это либо забыто, либо неправильно работает.

Да, при отладке видно, что так оно и есть - потому и не работают никакие поля, требующие передачи API-функциям имени файла - то есть, никакие. :D
(поле типа возвращает нечто неопределенное, а поле реального пути - просто переданный путь, т.к. иного получить по неверному имени невозможно)

Добавлено: Чт апр 01, 2010 21:20
GGS
MVV
Информация к размышлению: обычная панель, но путь содержит пробелы

Изображение

Добавлено: Чт апр 01, 2010 21:23
MVV
А у меня работает с пробелами - путь "F:\TEMP\0 7\_t c\":

Код: Выделить всё

Имя	Индекс	Реальный путь	Тип TC	Тип NTLinks	DOS-имя
Čeština\	000A000000000A1B	F:\TEMP\0 7	Точка переподкл-я	Точка соединения	ETINA~1
Čeština.txt	000A000000000A1C	F:\Test 1\ETINA~1.TXT	Файл	Файл	ETINA~1.TXT
English.txt	000A000000000A1D	F:\Test 1\English.txt	Файл	Файл	ENGLISH.TXT
Espańol.txt	000A000000000A1E	F:\Test 1\ESPAOL~1.TXT	Файл	Файл	ESPAOL~1.TXT
Espańol long.txt	002B000000000C96	F:\Test 1\ESPAOL~2.TXT	Файл	Файл	ESPAOL~2.TXT
Français.txt	0054000000000A1F	F:\Test 1\FRANAI~1.TXT	Файл	Файл	FRANAI~1.TXT
Slovenský.txt	002D000000000C8E	F:\Test 1\SLOVEN~1.TXT	Файл	Файл	SLOVEN~1.TXT
Русский.txt	0024000000000C91	F:\Test 1\Русский.txt	Файл	Файл	4C13~1.TXT
Русский длинный.txt	0040000000000C93	F:\Test 1\Русский длинный.txt	Файл	Файл	E620~1.TXT
简体中文 (Simplified Chinese).txt	0030000000000C95	F:\Test 1\(SIMPL~1.TXT	Файл	Файл	(SIMPL~1.TXT
И в папке "F:\Test 1\" тоже. :D

Добавлено: Чт апр 01, 2010 21:50
GGS
Странно это. Вот мои настройки из секции [CustomFields]

Код: Выделить всё

Widths4=92,25,-12,71,1024
Headers4=N\nИндекс объекта\nРеальный путь
Contents4=[=ntlinks.HLNK_Count]\n[=ntlinks.HLNK_Index]\n[=ntlinks.Obj_RealPath]
Options4=-1|1
и ещё

Код: Выделить всё

[ContentPlugins]
0=%Commander_Path%\Plugins\wdx\NTLinks\NTLinks.wdx
0_detect=
0_date=992040640
0_flags=0
Проверил ещё на Win7 с TC 7.50a - картина 1:1

MVV
Выложите куда-нибудь в архиве Ваш тестовый набор файлов с Unicode именами, попробую на них.

Добавлено: Чт апр 01, 2010 23:43
MVV
У меня с твоим набором все равно показывает поля. Windows XP, ТК запущен под юзером.

А вот тестовые файлы:

Код: Выделить всё

MIME-Version: 1.0
Content-Type: application/octet-stream; name="Test 1.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Test 1.7z"

N3q8ryccAANolcRm0AAAAAAAAAAiAAAAAAAAAKfFm9UAAIF74PJ+AhDmwGsGDrfODvY7wF0+GISc
8zh6qlfutYPIw1xlaCN64TEz5DRK48Y0uu0cWkOUHZNNiZC3Ug+hD+tQrxPFroOOp+8QqexqX3nB
qgfNdX4n5U2EkElSGj3BUR19iK6v+H9nZgHK0m265XjDRncFGJr6eLqei2E0AiIwAtJmp2IN2pjx
nFImmBAe2cbhhjuemSYyMnj2GdYnvvRVW92w9PtdALcV+1i/M+2ADLYNQNlMH2iMAWwMh7Gm7kmG
2eZ1GXtBCNztn+AAFwYAAQmA0AAHCwEAASMDAQEFXQAQAAAMgaEKARExEfMAAA==
PS. Давай на ты, в одной стране живем. Да и в инете иное не принято. :wink:

Добавлено: Пт апр 02, 2010 00:39
GGS
MVV писал(а):А вот тестовые файлы:
С ними в обычной панели индексы есть. :roll:

Вот моё:

Код: Выделить всё

MIME-Version: 1.0
Content-Type: application/octet-stream; name="Test 1.rar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Test 1.rar"

UmFyIRoHAM+QcwAADQAAAAAAAACfmXQggjgAFAAAABQAAAACwLBs0QAAgTwdMBgAgAAAAFRlc3Qg
MVxFc3Bhbm9sLnR4dAABzAnxBP/+RQBzAHAAYQDxAG8AbAANAAoAFEl0III9ABwAAAAcAAAAAv6I
OTMAAIE8HTAdAIAAAABUZXN0IDFcU2xvdmVuc2NpbmEudHh0AAHXC2ENBf/+UwBsAG8AdgBlAG4A
YQENAWkAbgBhAA0ACgANuXQggjoAEgAAABIAAAACos8lDgAAgTwdMBoAgAAAAFRlc3QgMVxUdXJr
Y2UudHh0AAHMBvwA58AD//5UAPwAcgBrAOcAZQANAAoABip0III9AAsAAAALAAAAAoCiav8AAIE8
HTAdAIAAAABUZXN0IDFckOPh4aqoqS50eHQABN8FIIFggZDAAtDz8fHq6OkNCg0K09Z04IAmAAAA
AAAAAAAAAgAAAAAAAIE8FDAGABAgAABUZXN0IDHEPXsAQAcA
MVV писал(а):Давай на ты, в одной стране живем.
Привычка. Я воспитывался когда страна называлась иначе и интернета не было.

Добавлено: Пт апр 02, 2010 01:57
MVV
Не знаю, у меня и для папки из твоего архива в 7.50 и в 7.55b1 в обычной панели индексы видны. Впрочем, это уже практически не имеет значения, раз будет Юникод-версия модуля.

Добавлено: Пт апр 02, 2010 02:07
GGS
MVV
Чудеса продолжаются. Оказывается пробел в пути ничего не значит, а важен способ получения мною тестовых файлов.
Если Вы распакуете мой "Test 1.rar" и посмотрите индексы файлов, то в обычной панели TC они будут видны.
Создайте и выполните в папке с моими файлами следующий BAT-файл:

Код: Выделить всё

For %%A in (*.txt) do fsutil hardlink create %%A_ %%A
так вот, у файлов *.txt_ с Unicode именами индексы не показываются и имена в DOS-формате не те, что надо. Во как!
Команда DIR /X в этой папке показывает отсутствие 8.3 имён у этих файлов.

Добавлено: Пт апр 02, 2010 03:08
MVV
Ага, у меня были на то подозрения, что у тебя может быть отключена генерация имен в коротком формате. Что ж, выходит, fsutil не генерирует короткие имена... Тогда все очевидно. Но мой багрепорт, отправленный Гислеру, как раз про файлы, у которых короткие имена есть.

С минуты на минуту выложу Юникод-версию NTLinks и пойду наконец спать. =)

Всё, выложил=) допиши, пожалуйста, к названию темы " (Unicode)" (как в теме про Virtual Panel). За неимением первого поста буду хозяйничать во втором.

NTLinks 1.0.0.72:
+ поддержка Юникода
+ два новых поля RP_TargetW, Obj_RealPathW (возвращают Юникод-строки)
+ изменен предпочтительный базовый адрес модуля
* для несуществующих файлов отображался тип 'точка переподключения'

Добавлено: Пт апр 02, 2010 09:44
GGS
Генерация коротких имён у меня не выключена, а вот fsutil действительно чудит. Бум знать.
MVV писал(а):допиши, пожалуйста, к названию темы " (Unicode)" (как в теме про Virtual Panel).
Не получается из-за огранмчения длины строки, как урезать?
MVV писал(а):За неимением первого поста буду хозяйничать во втором.
Может админы могут изменить эту "историческую несправедливость", пусть даже удалением моего первого поста или иным образом.

За 1.0.0.72 огромное спасибо.

Добавлено: Пт апр 02, 2010 13:41
MVV
Ну, если общие принципы тут такие же, как и на IPB, то надо либо удалить первый пост, либо найти на форуме мой более старый и добавить к теме.
Не получается из-за огранмчения длины строки, как урезать?
Спасибо, отлично. :)
За 1.0.0.72 огромное спасибо.
Обращайтесь. :wink:

Добавлено: Пт апр 09, 2010 09:52
MVV
Частично проблему первого поста исправили в ТК 7.55pb2, но не для всех имен. Например, для имен, содержащих китайские символы, теперь плагинам посылается короткое имя, а для диакритики - все еще длинное (отписался на оф. форуме).

Кстати, возможно, тему стоит разделить на тему об NTLinks (посты 61422, 61464, 61470, 61478) с текущим названием и тему о проблемах работы не-юникодных WDX с юникодными именами в панели поиска.