Sami Jildeh Ответов: 2

Значение не попадает в ожидаемый диапазон ошибка при создании ярлыка для файла с арабским именем


Когда я создаю ярлык с помощью C# для файлов с английскими именами ярлыки создаются успешно, но когда я пытаюсь создать ярлык с арабским именем, я получаю эту ошибку "значение не попадает в ожидаемый диапазон" ошибка в целевой части.

Вот этот код и используется
WshShell shell = new WshShell();
                
                string shortcutAddress = des_cmb.Text + @"\" + name_txt.Text + ".lnk";
                IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
                shortcut.Description = comment_txt.Text;
                //shortcut.Hotkey = "Ctrl+Shift+N";
                shortcut.Arguments = args_txt.Text;
                shortcut.WindowStyle = 1;//1 normal, 3 maximize, 7 minimize
                switch (style_cmb.SelectedIndex)
                {
                    case 0: { shortcut.WindowStyle = 1; break; }
                    case 1: { shortcut.WindowStyle = 3; break; }
                    case 2: { shortcut.WindowStyle = 7; break; }
                }
                shortcut.IconLocation = fileIcon;
                shortcut.WorkingDirectory = Path.GetDirectoryName(targetpath_txt.Text);
                shortcut.TargetPath = "\"" + targetpath_txt.Text + "\"";
                shortcut.Save();


Есть ли способ создать ярлыки для файлов с арабскими именами без получения ошибки?

Я использую C# WinForms

Что я уже пробовал:

Я попытался найти решение, но ничего не нашел.

2 Ответов

Рейтинг:
2

Sami Jildeh

Я нашел исправление в этом ответе
c# - создание ярлыка с символом Unicode - переполнение стека[^]
Он успешно создает ярлык для файла с именем Unicode, таким как арабское имя.


Рейтинг:
0

phil.o

Может быть, эта статья может быть чем-то полезна:
Windows IT Pro: ярлыки сценариев, содержащие Юникод[^]
В общем, есть два шага:
- создайте ярлык с именем, содержащим только (фиктивные) символы ASCII.
- переименуйте этот ярлык с именем, содержащим символы Юникода.
Надеюсь, это поможет. Любезно.