2012-10-22 129 views
7

爲了長話短說,我需要使用C#創建一個文件夾的快捷方式。我一直在閱讀使用IWshRuntimeLibrary。當我去嘗試使用IWshRuntimeLibrary時,我得到各種模糊錯誤System.IO.File。我假設這是因爲有一個IWshRuntimeLibrary.File接口以及System.IO.File。我真正能夠找到的是關於製作應用程序快捷方式的文章,而不是文件夾。在c#中創建一個文件夾的快捷方式#

歧義錯誤旁白:

  • 這是使用文件夾快捷方式正確的工具?
  • 我如何使用這個
  • 如何指定,當我嘗試創建一個快捷方式文件夾,快捷方式放置

另外創建一個快捷方式,說C:\TEMP使用此:

IWshShortcut shortcut; 
wshShell = new WshShellClass(); 
shortcut = (IWshShortcut)wshShell.CreateShortcut(@"C:\TEMP"); 

shortcut.TargetPath = @"C:\Documents and Settings"; 

我得到COMException。根據我讀過的內容,應該創建一個到C盤temp文件夾的快捷方式,並將快捷方式放在Documents and Settings中。

+0

可能重複:http://stackoverflow.com/questions/3391923/placing-a-shortcut-in-users-

下面的代碼片段將在桌面上創建一個快捷方式到網絡文件夾啓動文件夾以啓動Windows – 2012-10-22 20:33:11

+0

爲了擺脫歧義錯誤,請確保何時使用.NET File類,調用System.IO.File,並在使用其他類時使用IWShRuntimeLibrary.File 。如果我想在使用System.Windows.Forms和System.Threading的類中使用Timer,因爲它們都包含Timer類,所以我一直都會遇到這個問題。抱歉,我無法幫助您解決主要問題。 –

+0

@ademing2,我有點想到這是我必須做的,但在添加之前,我的所有System.IO.File方法調用之前,我想看看我是否在正確的軌道上。雖然 – swabs

回答

7

不要忘記將Embed Interop Types設置爲False來引用Interop.IWshRuntimeLibrary。 我測試過並沒有收到錯誤。

// Make sure you use try/catch block because your App may has no permissions on the target path! 
    try 
    { 
    CreateShortcut(@"C:\temp", @"C:\MyShortcutFile.lnk", 
     "Custom Shortcut", "/param", "Ctrl+F", @"c:\"); 
    } 
    catch (Exception ex) 
    { 
    Console.WriteLine(ex.Message); 
    } 



    /// <summary> 
    /// Create Windows Shorcut 
    /// </summary> 
    /// <param name="SourceFile">A file you want to make shortcut to</param> 
    /// <param name="ShortcutFile">Path and shorcut file name including file extension (.lnk)</param> 
    public static void CreateShortcut(string SourceFile, string ShortcutFile) 
    { 
     CreateShortcut(SourceFile, ShortcutFile, null, null, null, null); 
    } 

    /// <summary> 
    /// Create Windows Shorcut 
    /// </summary> 
    /// <param name="SourceFile">A file you want to make shortcut to</param> 
    /// <param name="ShortcutFile">Path and shorcut file name including file extension (.lnk)</param> 
    /// <param name="Description">Shortcut description</param> 
    /// <param name="Arguments">Command line arguments</param> 
    /// <param name="HotKey">Shortcut hot key as a string, for example "Ctrl+F"</param> 
    /// <param name="WorkingDirectory">"Start in" shorcut parameter</param> 
    public static void CreateShortcut(string TargetPath, string ShortcutFile, string Description, 
     string Arguments, string HotKey, string WorkingDirectory) 
    { 
     // Check necessary parameters first: 
     if (String.IsNullOrEmpty(TargetPath)) 
     throw new ArgumentNullException("TargetPath"); 
     if (String.IsNullOrEmpty(ShortcutFile)) 
     throw new ArgumentNullException("ShortcutFile"); 

     // Create WshShellClass instance: 
     var wshShell = new WshShellClass(); 

     // Create shortcut object: 
     IWshRuntimeLibrary.IWshShortcut shorcut = (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(ShortcutFile); 

     // Assign shortcut properties: 
     shorcut.TargetPath = TargetPath; 
     shorcut.Description = Description; 
     if (!String.IsNullOrEmpty(Arguments)) 
     shorcut.Arguments = Arguments; 
     if (!String.IsNullOrEmpty(HotKey)) 
     shorcut.Hotkey = HotKey; 
     if (!String.IsNullOrEmpty(WorkingDirectory)) 
     shorcut.WorkingDirectory = WorkingDirectory; 

     // Save the shortcut: 
     shorcut.Save(); 
    } 

來源:http://zayko.net/post/How-to-create-Windows-shortcut-(C).aspx

+1

正是我在找的東西,我也接近這個解決方案。只是沒有正確命名我的.lnk快捷方式文件 – swabs

1

是專家交換使用IShellLink A液:

Creating Shortcuts in .NET

提供了託管層爲您打造文件和文件夾shorcuts。

它是VB.NET,但您可以使用免費轉換器將其轉換爲C#。

3

你得到它周圍的其他方法:你想使C:\Temp快速進入C:\Documents and Settings文件夾。

var desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); 
IWshShortcut shortcut; 
var wshShell = new WshShellClass(); 
shortcut = (IWshShortcut)wshShell.CreateShortcut(Path.Combine(desktop, @"Temp.lnk")); 
shortcut.TargetPath = @"\\computername\sharename"; 
shortcut.Save(); 
+1

我意識到這是永遠的,但我試圖用這種方法來創建一個名爲類似2.7.1的文件夾的鏈接,當我嘗試點擊由此產生的快捷方式,Windows會嘗試像打開文件一樣打開文件夾。有關如何確保Windows知道這是文件夾的快捷方式的任何想法? –

相關問題