2016-03-27 15 views
0

以下のコードを使用して、ショートカットを動的に作成しています。しかし、フォルダ名にタイ語、ギリシア語などのUnicode文字がある場合、targetPathは引数例外をスローします。あなたが必要になることがありフォルダ名にユニコード文字が含まれているショートカットを作成する

IWshRuntimeLibrary.WshShell shell = new WshShell(); 
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutLocation); 
shortcut.Description = "My shortcut description"; // The description of the shortcut 
shortcut.WorkingDirectory = currentPath; 


shortcut.TargetPath = targetFileLocation;     // The path of the file that will launch when the shortcut is run 
shortcut.Save(); 
+0

扱うことのできないUnicode文字の置換文字列(u1234など)のロジックを作成します。 – Ian

答えて

1

ファイルシステムからリファレンスのShell32.dllに、「参照の追加...」ダイアログの[COM]タブに移動し、「マイクロソフトシェルコントロールとオートメーション」という名前のコンポーネントを選択し

string destPath = @"c:\temp"; 
string shortcutName = @"नमस्ते.lnk"; 

// Create empty .lnk file 
string path = System.IO.Path.Combine(destPath, shortcutName); 
System.IO.File.WriteAllBytes(path, new byte[0]); 
// Create a ShellLinkObject that references the .lnk file 
Shell32.Shell shl = new Shell32.ShellClass(); 
Shell32.Folder dir = shl.NameSpace(destPath); 
Shell32.FolderItem itm = dir.Items().Item(shortcutName); 
Shell32.ShellLinkObject lnk = (Shell32.ShellLinkObject)itm.GetLink; 
// Set the .lnk file properties 
lnk.Path = Environment.GetFolderPath(Environment.SpecialFolder.System) + @"\notepad.exe"; 
lnk.Description = "nobugz was here"; 
lnk.Arguments = "sample.txt"; 
lnk.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
lnk.Save(path); 
+1

私はnobugzです。私はそこにいた。これがあなたのコードであるとは思わないでください。属性を指定する必要があります。 –

関連する問題