У меня есть процесс, который создает файлы ярлыков Windows (.url). Файлы кодируются в UTF-8. Файлы содержат раздел [InternetShortcut], где указан URL =. В этом случае это URL-адреса файлов: ///, которые позволяют людям открывать пути в локальной сети. URL-адреса - это все пути UNC.Ярлыки Windows и символы Unicode в URL-адресе
Обычно процесс работает нормально. Но когда UNC-путь содержит символы Unicode, такие как «í» из примера кода ниже, Windows не может «найти» URL-адрес, когда конечный пользователь пытается открыть ярлык Интернета из проводника Windows:
Образец файл следующим образом:
[InternetShortcut]
URL=file:///\\lt-splourde\d$\POC\Montería Test\
IconIndex=1
Когда я открываю файл .url пример выше с помощью текстового редактора, я вижу путь с соответствующими символами Unicode. Но когда я пытаюсь открыть файл из Проводника Windows, чтобы получить доступ к пути, Windows сообщает, что он не может получить доступ к этому пути, и, похоже, он искажает символы Unicode.
Исходный код, который создает эти ярлыки следующим образом:
private void CreateShortcutAsUrl(string uncRootPath, string name, string path, int projectId)
{
path = path + (path.EndsWith(@"\") ? "" : @"\");
using (StreamWriter writer = new StreamWriter(
String.Format(@"{0}\{1}\{2}.url", uncRootPath,
ShortcutsDirectory, new FileServerController().SanitizeNameForDirectory(name)),
false, Encoding.UTF8))
{
writer.WriteLine(@"[InternetShortcut]");
writer.WriteLine(@"URL=file:///" + path);
writer.Flush();
}
}
Кто-нибудь знает решение для этого вопроса?
Спасибо!
(я отправил это на суперпользователя первоначально, но я чувствую, что содержание более программист ориентированных)
было бы лучше, если бы процесс, который записывает URL-адреса использует [ 'InternetCanonicalizeUrl'] (HTTP:. //msdn.micr osoft.com/en-us/library/windows/desktop/aa384342(v=vs.85).aspx). Это ваш процесс? У вас есть исходный код? –
Привет, Роджер, у меня есть источник. Я напишу выше –