Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows文件资源管理器中以编程方式将文件夹添加到收藏夹_Windows - Fatal编程技术网

如何在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"