我在下面有以下代码。我似乎无法将其添加到收藏夹中。如果我将其更改为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();
}
答案 0 :(得分:2)
Environment.SpecialFolder.Favorites
表示包含 Internet Explorer收藏夹的文件夹,位于%USERPROFILE%\Favorites
文件夹中。
没有Environment.SpecialFolder
值代表 Windows资源管理器收藏夹,它们位于%USERPROFILE%\Links
文件夹中。
要检索Links
文件夹的路径,您必须使用以下任一方法直接在Shell中查询FOLDERID_Links
路径:
PInvoke致电SHKnownFolderPath()
。
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();