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

Добавлено: Чт ноя 08, 2018 08:38
Flasher
Непонятно, где лежит файл
Я же писал про корни.
и что в полях диалога должно быть введено.
Если бы было что-то введено, то об этом бы и шла речь.
Изображение

Про звёздочку понял. Тогда остаётся ключ принудительной отметки (без указания звёздочки).
Можно, конечно, разделить первое поле надвое (путь/имя), но на это ты вряд ли отважишься.

Добавлено: Чт ноя 08, 2018 11:22
MVV
Имею файл D:\File.txt, создаю ссылку как C:\*, независимо от состояния опции сохранения пути относительно базы ссылка получается с расширением.

Создаю ссылку на C:\Windows\System32\control.exe как D:\test\*, тоже и с опцией и без получаю ссылку с расширением...

Создал папку и положил файл C:\tcmd\NTLinksMaker\NTLinksMaker.exe, как у тебя, и снова с расширением...

ЧЯДНТ?

Добавлено: Чт ноя 08, 2018 11:35
Flasher
Ты у меня спрашиваешь? Разработчик кто из нас, чтобы реагировать на демонстрацию? :roll:

Возможно, проблема в GetModuleFileNameW у kernell32.dll разных версий на системах x86/64. У shell32.dll, например, тоже такая проблемка с именами имеется.

Добавлено: Чт ноя 08, 2018 12:43
MVV
Возможно, проблема в GetModuleFileNameW у kernell32.dll разных версий на системах x86/64.
Но эта функция никак не применяется к объектам, для которых создаются ссылки, только для получения относительных путей к конфигу и языковым файлам.

Кстати, посмотри целевой объект созданной ссылки - он с расширением или без?

И билд это точно 396?

Добавлено: Чт ноя 08, 2018 13:03
Flasher
С расширением.
Точно.

И, как ты понимаешь, при указании расширения (*.ext или *Name.ext) никаких проблем.

Добавлено: Пт ноя 09, 2018 15:07
MVV
Нашёл недостающее звено: тотал должен быть запущен с повышенными правами, чтобы ссылки создавались основным процессом, а не дополнительным. После подтверждения повышения дополнительный процесс создает ссылку с расширением.

И сразу понял, почему так: маска * копирует без расширений, как и сам тотал. Чтобы были расширения, маска должна быть *.*. Это описано в Readme, но я позабыл об этом.

Добавлено: Пт ноя 09, 2018 15:44
Flasher
Пример основного и дополнительного можешь привести?

Добавлено: Пт ноя 09, 2018 15:55
MVV
Основной процесс - который показывает тебе окошко. Дополнительный - который запускается с повышенными правами, когда ты нажимаешь Повтор в окне с сообщением об ошибке. Ему передаются все необходимые параметры, чтобы он мог продолжить работу с того объекта, на котором остановился основной процесс.

Добавлено: Пт ноя 09, 2018 17:06
Flasher
Не понял, как может относиться окно с сообщением об ошибке к моему случаю?

Добавлено: Пт ноя 09, 2018 17:17
MVV
Не окно с сообщением, а факт наличия у интерактивного процесса прав на создание симлинков. Если у интерактивного (который показывает диалог) процесса NTLinksMaker хватает прав на создание симлинков, он их создаёт, а если нет - запускает повышенную копию и передаёт ей параметры. И в этих параметрах маска не передаётся, что приводит к неконсистентному поведению.

Добавлено: Пт ноя 09, 2018 17:35
Flasher
Т.е. ты хочешь сказать, что у процесса в моих условиях с админским профилем и отключённым UAC может не хватать прав?

Добавлено: Пт ноя 09, 2018 20:49
MVV
У тебя их как раз хватает) а у меня со включенным UAC - нет, потому и не мог понять, что у тебя не так работает.

Добавлено: Пт ноя 09, 2018 23:24
Flasher
Но при этом:
а если нет - запускает повышенную копию и передаёт ей параметры. И в этих параметрах маска не передаётся
Так как хватает, если маска не передаётся?

Что с отметкой опции решил в итоге?

Добавлено: Сб ноя 10, 2018 11:33
MVV
Прав у тебя хватает у основного процесса на создание симлинков. Поэтому второй не запускается, маска не теряется, ссылка создаётся без расширения в полном соответствии с маской.

А у меня для создания симлинков запрашивается повышение, запускается дочерний процесс, которому маска не передаётся. Я это исправлю.

С опцией - параметр надо добавить, при котором из одного файла не будет выделяться имя, и тогда будет работать сохранение пути относительно базы для любого числа объектов.

Добавлено: Сб ноя 10, 2018 11:51
Flasher
С правами ясно.
из одного файла не будет выделяться имя
Куда и как выделяться? Имя же править нужно.

Как насчёт установки символа [*!~^<>#@] между /r= и "%P"? Или : вместо = как вариант для установки флажка?