2016-03-27 9 views
0

Ich habe den folgenden Code verwendet, um Verknüpfungen dynamisch zu erstellen. Aber der targetPath löst eine Argumentausnahme, wenn der Ordnername Unicode-Zeichen wie Thai, griechische Sprache hat.Erstellen einer Verknüpfung, in der der Ordnername Unicode-Zeichen enthält

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

Sie benötigen um eine Logik für Ersatzzeichenfolge (wie u1234) für die Unicode-Zeichen zu erzeugen, die nicht behandelt werden können. – Ian

Antwort

1

Referenz Shell32.dll aus dem Dateisystem, gehen Sie zu Registerkarte COM des „ref Hinzufügen ...“ und wählen Sie die Komponente mit dem Namen „Microsoft Shell-Bedienelemente und Automation“

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

Ich bin nobugz. Ich war da. Geben Sie nicht vor, dass dies Ihr Code ist, Sie müssen Attribution bereitstellen. –