Windows インターネット ショートカット ファイル (.url) を作成するプロセスがあります。ファイルは UTF-8 でエンコードされています。ファイルには [InternetShortcut] セクションが含まれており、URL= が指定されています。この場合、これらは file:/// プロトコル URL であり、人々が LAN 上のパスを開くことを可能にします。URL はすべて UNC パスです。
通常、プロセスは正常に機能します。ただし、UNC パスに次のコード サンプルの「í」などの Unicode 文字が含まれている場合、エンド ユーザーが Windows エクスプローラーからインターネット ショートカットを開こうとすると、Windows は URL を「見つける」ことができません。
サンプル ファイルは次のとおりです。
[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();
}
}
この問題の解決策を知っている人はいますか?
ありがとう!
(もともとスーパーユーザーに投稿していたのですが、よりプログラマー向けの内容になっている気がします)