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

我知道这里回答的解决scheme。 基本上这个想法是在%USERPROFILE%\Favoriates文件夹中创build一个到文件夹的链接。

但是这对我不起作用。 我正在使用Windows8(不知道是否重要)。 在我的%USERPROFILE%\Favoriates ,它包含了IE浏览器的优惠项目,而不是文件浏览器。

我试图通过创build一个非常独特的名称的文件夹,并将其添加到文件资源pipe理器的喜好来在registry和文件系统中find此设置。 然后在registry和文件系统中search名称。 没有产生任何东西。

它看起来像你想%UserProfile%\ Links。

固定的收藏夹

以编程方式,您想要使用带有KNOWNFOLDERID_Links的SHGetKnownFolderPath检索位置,而不是对任何位置进行硬编码,然后使用IShellLink在该位置创建快捷方式文件。

这是第一部分的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; } 

啊,看起来像Windows 8这个位置已经更改为%USERPROFILE%\Links ,而不是%USERPROFILE%\Favoriates

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

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

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

 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"