Поддерживают ли ярлыки Windows очень длинные аргументы?

Я пытаюсь создать ярлык (на рабочем столе), содержащий длинную строку аргументов (> MAX_PATH).

В документации MSDN четко указано, что для строки Unicode строка может быть длиннее MAX_PATH.

Результирующий ярлык обрезается сразу после символов MAX_PATH (то есть Path + Аргументы ).

Что-то не так с моей реализацией или это какое-то ограничение Windows?

procedure CreateShortcut(APath: WideString;
  AWorkingDirectory: WideString; AArguments: WideString; ADescription: WideString;
  ALinkFileName: WideString);
var
   IObject : IUnknown;
   ISLink  : IShellLinkW;
   IPFile  : IPersistFile;
begin
   IObject := CreateComObject(CLSID_ShellLink);
   ISLink := IObject as IShellLinkW;
   ISLink.SetPath(            PWideChar(APath));
   ISLink.SetWorkingDirectory(PWideChar(AWorkingDirectory));
   ISLink.SetArguments(       PWideChar(AArguments));
   ISLink.SetDescription(     PWideChar(ADescription));
   IPFile := IObject as IPersistFile;
   IPFile.Save(PWideChar(ALinkFileName), False);
end;

PS: ОС - Windows XP (и выше).

5
задан Jens Mühlenhoff 23 October 2014 в 10:56
поделиться