2016-05-29 2 views
-1

Мое приложение выброшенCOMException при сохранении .LNK файла на рабочем столе

System.Runtime.InteropServices.COMException

При сохранении .lnk файла на рабочем столе. Линия ошибки показана приложением.

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
      var startupFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
      var shell = new WshShell(); 
      var windowsApplicationShortcut = (IWshShortcut)shell.CreateShortcut(startupFolderPath); 
      windowsApplicationShortcut.Description = "Network Folder"; 
      windowsApplicationShortcut.WorkingDirectory = @"Z:\"; 
      windowsApplicationShortcut.TargetPath = @"Z:\"; 
      windowsApplicationShortcut.IconLocation = Application.StartupPath + @"\img\normal.ico"; 
      windowsApplicationShortcut.Save(); // this thrown error 
     } 

Мой рабочий стол не доступен только для чтения.

ответ

0

var windowsApplicationShortcut = (IWshShortcut)shell.CreateShortcut(startupFolderPath);

startupFolderPath должен включать имя файла ярлыка, но не только путь к папке, которая будет содержать файл ярлыка. MSDN ref

UPDATE:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
      var startupFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
      var inkRef = startupFolderPath + @"\img\normal.ico"; 
      var shell = new WshShell(); 
      var windowsApplicationShortcut = (IWshShortcut)shell.CreateShortcut(inkRef); 
      windowsApplicationShortcut.Description = "Network Folder"; 
      windowsApplicationShortcut.WorkingDirectory = @"Z:\"; 
      windowsApplicationShortcut.TargetPath = @"Z:\"; 
      windowsApplicationShortcut.IconLocation = Application.StartupPath + @"\img\normal.ico"; 
      windowsApplicationShortcut.Save(); // this thrown error 
     } 
+0

обновил свой ответ –

+0

Спасибо, это сработало –