如何以编程方式将文件夹添加到Windows文件资源管理器中的收藏夹

时间:2013-05-20 18:52:25

标签: windows

我知道已解答的解决方案here。基本上,我们的想法是在%USERPROFILE%\Favoriates文件夹中创建指向文件夹的链接。

然而它对我不起作用。我正在使用Windows8(不知道是否重要)。在我的%USERPROFILE%\Favoriates中,它包含IE的优惠项,而不是文件资源管理器。

我尝试在注册表和文件系统中找到此设置,方法是创建一个具有非常唯一名称的文件夹,并将其添加到文件资源管理器中。然后在注册表和文件系统中搜索名称。没有产生任何东西。

5 个答案:

答案 0 :(得分:4)

看起来你想要%UserProfile%\ Links。

Pinned favorites

答案 1 :(得分:4)

以编程方式,您希望使用SHGetKnownFolderPath使用KNOWNFOLDERID_Links检索位置,而不是对任何位置进行硬编码,然后使用IShellLink在该位置创建快捷方式文件。< / p>

这是第一部分的C#示例:

[DllImport("shell32.dll")]
static extern int SHGetKnownFolderPath(
                      [MarshalAs(UnmanagedType.LPStruct)] Guid knownFolderId, 
                      uint flags,
                      IntPtr userToken,
                      [MarshalAs(UnmanagedType.LPWStr)] out string knownFolderPath);

// this corresponds to the KNOWNFOLDERID_Links constant:
public static readonly Guid Links = new Guid("bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968");

public static string GetKnownFolderPath(Guid knownFolderId)
{
    string path;
    int result = SHGetKnownFolderPath(knownFolderId, 0, IntPtr.Zero, out path);
    // … (error handling; check result for E_FAIL, E_INVALIDARG, or S_OK)
    return path;
}

答案 2 :(得分:0)

啊,对于Windows 8来说,此位置已更改为%USERPROFILE%\Links,而不是%USERPROFILE%\Favoriates

所以回答我的问题。要以编程方式将文件夹添加到Windows 8文件资源管理器中的“收藏夹”,您需要在%USERPROFILE%\Links文件夹中创建指向该文件夹的链接:

mklink /D %USERPROFILE%\Links\<Link_Name> <Tartget_Folder_Path>

答案 3 :(得分:0)

资源管理器收藏夹存储在%USERPROFILE%\Links

答案 4 :(得分:0)

Function AddAFolderShortCut($fileName, $targetPath)
{
    Write-Host "Creating Shortcut $fileName points to $targetPath"
    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Links\$fileName.lnk")
    $Shortcut.TargetPath = $targetPath
    $Shortcut.Save()
}

AddAFolderShortCut "FolderName" "C:\folderpath"