我知道这里回答的解决方案。基本上这个想法是在文件夹中创建一个指向文件夹的链接%USERPROFILE%\Favoriates
。
但是它对我不起作用。我正在使用 Windows8(不知道这是否重要)。在我的%USERPROFILE%\Favoriates
中,它包含 IE 的收藏项,而不是文件资源管理器。
我试图通过创建一个名称非常独特的文件夹并将其添加到文件资源管理器的收藏夹中来在注册表和文件系统中找到此设置。然后在注册表和文件系统中搜索名称。没有产生任何东西。
看起来你想要 %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
:
mklink /D %USERPROFILE%\Links\<Link_Name> <Tartget_Folder_Path>
Explorer 收藏夹存储在这里%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"