显然,微软已经(有点)取代了"收藏夹"带有快速访问项的Windows资源管理器项。但我还没有找到一种方法以编程方式向其中添加文件夹(在Google上都不是MSDN)。有没有办法做到这一点?
答案 0 :(得分:10)
在powershell(至少)中有一种简单的方法:
$o = new-object -com shell.application
$o.Namespace('c:\My Folder').Self.InvokeVerb("pintohome")
希望它有所帮助。
答案 1 :(得分:5)
Yohan Ney关于固定项目的答案是正确的。要取消固定项目,您可以执行以下操作:
$QuickAccess = New-Object -ComObject shell.application
($QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "C:\Temp"}).InvokeVerb("unpinfromhome")
这是我写的一个脚本,使pin / unpin更容易一些:
https://gallery.technet.microsoft.com/Set-QuickAccess-117e9a89
答案 2 :(得分:4)
答案 3 :(得分:4)
在MS发布API之前,它可能会对某人有所帮助。 我运行了procmon,似乎涉及这些注册表项
固定快速访问:
HKEY_CLASSES_ROOT\Folder\shell\pintohome
取消固定时:
HKEY_CLASSES_ROOT\PinnedFrequentPlace\shell\unpinfromhome\command
固定时也会使用此资源:( EDIT1 :不能再找到它了..)
AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\{SOME_SORT_OF_GUID}.automaticDestinations-ms
您可以尝试使用7-zip打开它,其中有几个适合目的地的文件
EDIT2 :我发现在“运行”中运行此功能会打开快速访问权限:
shell:::{679F85CB-0220-4080-B29B-5540CC05AAB6}
答案 4 :(得分:2)
我喜欢约翰的回答,但我添加了一点,以免删除已经存在的一些项目。我偶然把它钉在那里我必须选择pin文件夹或其他东西才能快速访问。
$QuickAccess = New-Object -ComObject shell.application
$okItems = @("Desktop","Downloads","Documents","Pictures","iCloud Photos","iCloud Drive","PhpstormProjects","Wallpapers 5","Videos", "Schedules for testing")
($QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.name -notin $okItems}).InvokeVerb("unpinfromhome");
答案 5 :(得分:0)
void PinToHome(const std::wstring& folder)
{
ShellExecute(0, L"pintohome", folder.c_str(), L"", L"", SW_HIDE);
}
这是容易的部分,仍然无法做一个unpinfromhome
答案 6 :(得分:0)
以其他人所说的为基础...这允许您删除所有固定的文件夹(而不仅仅是所有/最近的文件夹/项目):
$o = new-object -com shell.application
$($o.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where { $_.IsFolder -eq "True" -and ($($_.Verbs() | Where-Object {$_.Name -in "Unpin from Quick access"}) -ne $null)}).InvokeVerb("unpinfromhome")
我需要这个,所以我可以快速备份/恢复快速访问链接列表。所以我把它放在我的脚本的顶部(删除所有固定的项目,然后脚本的其余部分重新添加它们。这确保顺序正确。
是的,我确信上面的代码有更好的语法。
答案 7 :(得分:0)
我能够根据这篇文章中的信息使用shell32在C#中使用这个帖子,以及来自这篇文章{shell}的一些信息https://stackoverflow.com/a/19035049
您需要添加对“Microsoft Shell控件和自动化”的引用。
这将添加一个链接
Type shellAppType = Type.GetTypeFromProgID("Shell.Application");
Object shell = Activator.CreateInstance(shellAppType);
Shell32.Folder2 f = (Shell32.Folder2)shellAppType.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, null, shell, new object[] { "C:\\temp" });
f.Self.InvokeVerb("pintohome");
这将删除名称
的链接Type shellAppType = Type.GetTypeFromProgID("Shell.Application");
Object shell = Activator.CreateInstance(shellAppType);
Shell32.Folder2 f2 = (Shell32.Folder2)shellAppType.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, null, shell, new object[] { "shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}" });
Console.WriteLine("item count: " + f2.Items().Count);
foreach (FolderItem fi in f2.Items())
{
Console.WriteLine(fi.Name);
if (fi.Name == "temp")
{
((FolderItem)fi).InvokeVerb("unpinfromhome");
}
}
答案 8 :(得分:0)
编辑:经过进一步调查,我意识到快速访问包含两个“部分”。一种是固定项目,另一种是常用文件夹。由于某些原因,Music
和Videos
默认出现在第二部分(至少在1909年),与其余部分不同(桌面/下载/文档/图片)。因此,用于调用的动词从unpinfromhome
变为removefromhome
(在HKEY_CLASSES_ROOT\FrequentPlace
中定义,CLSID:{b918dbc4-162c-43e5-85bf-19059a776e9e}
)。在PowerShell中:
$Unpin = @("$env:USERPROFILE\Videos","$env:USERPROFILE\Music")
$qa = New-Object -ComObject shell.application
$ob = $qa.Namespace('shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}').Items() | ? {$_.Path -in $Unpin}
$ob.InvokeVerb('removefromhome')
在Windows 1909中,无法使用建议的PowerShell解决方案从快速访问中取消锁定Music
或Videos
链接。似乎它们很特别,因为它们不像其他图标那样包含“ pin”图标。
解决方案是固定和取消固定它们。我对Windows API或PowerShell的了解不多,因此可能会有一种不太复杂的方法。
$Unpin = @("$env:USERPROFILE\Videos","$env:USERPROFILE\Music")
$qa = New-Object -ComObject shell.application
ForEach ($dir in $Unpin) { $qa.Namespace($dir).Self.InvokeVerb('pintohome') }
$ob = $qa.Namespace('shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}').Items() | ? {$_.Path -in $Unpin}
$ob.InvokeVerb('unpinfromhome')
另一种方法是重命名f01b4d95cf55d32a.automaticDestinations-ms
,然后注销/重新引导以便重新创建。但是我不知道它是否有副作用。批处理脚本:
:: f01b4d95cf55d32a => Frequent Folders
:: 5f7b5f1e01b83767 => Recent Files
rename "%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms" f01b4d95cf55d32a.automaticDestinations-ms.bak