如何在Windows文件资源管理器中以编程方式将文件夹添加到收藏夹
我知道答案。基本上,这个想法是在如何在Windows文件资源管理器中以编程方式将文件夹添加到收藏夹,windows,Windows,我知道答案。基本上,这个想法是在%USERPROFILE%\Favoriates文件夹中创建一个指向文件夹的链接 然而,这对我不起作用。我正在使用Windows8(不知道这是否重要)。在my%USERPROFILE%\Favoriates中,它包含IE的favoriate项,而不是文件资源管理器 我试图在注册表和文件系统中找到此设置,方法是创建一个具有唯一名称的文件夹,并将其添加到文件资源管理器收藏夹中。然后在注册表和文件系统中搜索名称。没有生成任何内容。看起来您需要%UserProfile%\
%USERPROFILE%\Favoriates
文件夹中创建一个指向文件夹的链接
然而,这对我不起作用。我正在使用Windows8(不知道这是否重要)。在my%USERPROFILE%\Favoriates
中,它包含IE的favoriate项,而不是文件资源管理器
我试图在注册表和文件系统中找到此设置,方法是创建一个具有唯一名称的文件夹,并将其添加到文件资源管理器收藏夹中。然后在注册表和文件系统中搜索名称。没有生成任何内容。看起来您需要%UserProfile%\Links
啊,对于Windows 8,此位置似乎已更改为
%USERPROFILE%\Links
,而不是%USERPROFILE%\favorites
所以来回答我的问题。要以编程方式将文件夹添加到Windows 8文件资源管理器中的收藏夹,您需要在%USERPROFILE%\Links
文件夹中创建指向该文件夹的链接:
mklink /D %USERPROFILE%\Links\<Link_Name> <Tartget_Folder_Path>
mklink/D%USERPROFILE%\Links\
浏览器收藏夹存储在此处%USERPROFILE%\Links
通过编程,您希望使用with而不是硬编码任何位置来检索位置,然后使用IShellLink
在该位置创建快捷方式文件
以下是第一部分的C#示例:
[DllImport(“shell32.dll”)]
静态外部int SHGetKnownFolderPath(
[Marshallas(UnmanagedType.LPStruct)]Guid knownFolderId,
乌因特旗,
IntPtr用户令牌,
[Marshallas(UnmanagedType.LPWStr)]输出字符串knownFolderPath);
//这对应于KNOWNFOLDERID_Links常量:
公共静态只读Guid链接=新Guid(“bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968”);
公共静态字符串GetKnownFolderPath(Guid knownFolderId)
{
字符串路径;
int result=SHGetKnownFolderPath(knownFolderId,0,IntPtr.Zero,out path);
//…(错误处理;检查E_失败、E_无效或S_正常的结果)
返回路径;
}
不要硬编码路径。使用API(例如SHGetKnownFolderPath)获取正确的路径。收藏夹列表将由用户控制。应用程序不应将它们插入用户的收藏夹中。这会导致用户不满意。
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"