用文件路径C#在收藏夹中创建快捷方式

时间:2017-04-13 00:34:59

标签: c# special-folders

我在下面有以下代码。我似乎无法将其添加到收藏夹中。如果我将其更改为specialfolders.desktop,它会在桌面上创建一个快捷方式。

private void buttonAddFav_Click(object sender, EventArgs e)
    {
        string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        string targetPath = listFolderResults.SelectedItem.ToString();
        var wsh = new IWshShell_Class();
        IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
            Environment.GetFolderPath(Environment.SpecialFolder.Favorites) + "\\shorcut2.lnk") as IWshRuntimeLibrary.IWshShortcut;
        shortcut.TargetPath = targetPath;
        shortcut.Save();
    }

enter image description here

2 个答案:

答案 0 :(得分:2)

Environment.SpecialFolder.Favorites表示包含 Internet Explorer收藏夹的文件夹,位于%USERPROFILE%\Favorites文件夹中。

没有Environment.SpecialFolder值代表 Windows资源管理器收藏夹,它们位于%USERPROFILE%\Links文件夹中。

要检索Links文件夹的路径,您必须使用以下任一方法直接在Shell中查询FOLDERID_Links路径:

  1. PInvoke致电SHKnownFolderPath()

  2. COM互操作致电IKnownFolderManager.GetFolder()然后IKnownFolder.GetPath()

答案 1 :(得分:1)

以下代码最终为我工作。下面的答案有助于弄清楚我需要构建%userprofile%\ links,但%userprofile%在保存时给了我错误。当我使用下面的方法时,它有效。

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        string targetPath = listFolderResults.SelectedItem.ToString();
        string shortcutPath = string.Format(@"C:\Users\{0}\Links",Environment.UserName);
        MessageBox.Show(shortcutPath);

        var wsh = new IWshShell_Class();
        IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
            shortcutPath + string.Format(@"\{0}.lnk",textFavName.Text)) as IWshRuntimeLibrary.IWshShortcut;
        shortcut.TargetPath = targetPath;
        shortcut.Save();