2014-01-20 1 views
1

я имею исключение с этим кодом:Exception с WshShell и Show Desktop Link C#

 public void link() 
    {   
     string startupfolder = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\"; 
     string desktoplink = "c:\windows\explorer.exe shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}" 
     WshShell shell = new WshShell(); 
     IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(startupfolder); 
     shortcut.TargetPath = desktoplink; 
     shortcut.Description = "Desktop Autostart"; 
     shortcut.Save(); 
    } 

Если я удалить три двойные точки (:: :) это работает. я предполагаю, что это какой-то неприемлемый характер ...

этот код из программы киоска, которую я пишу, и все машины должны запускаться в режиме рабочего стола, пропуская метро. Не могли бы вы помочь мне решить эту проблему?

ответ

0

в качестве тренировки я сумел создать пакетный файл с помощью команды оболочки и поместить его в папку запуска:

static string startupfolder = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\"; 
    static string windowsfolder = Environment.GetFolderPath(Environment.SpecialFolder.Windows) + "\\"; 
    static string nomebat = "Desktop Autostart.bat"; 
    static string batchcommand = "echo off\nC:\\Windows\\explorer.exe shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}\nend"; 
    public void link() 
    {   
     using (FileStream fs = System.IO.File.Create(startupfolder + nomebat)) 
     { 
      Byte[] data = new UTF8Encoding(true).GetBytes(batchcommand); 
      fs.Write(data, 0, data.Length); 
     } 

    } 

я не знаю, если это может быть программно хорошим решением, но это единственное, что я нашел ...

любые предложения?