По-видимому, Microsoft (вроде) заменила элемент «Избранное» Windows Explorer элементом быстрого доступа. Но я не смог найти способ программно добавлять туда папки (ни на Google, ни на MSDN). Разве это еще не так?Возможно ли программно добавить папки в панель быстрого доступа Windows 10 в окне проводника?
ответ
Я получил ответ здесь:
Windows 10 - Programmatically use Quick Access
Видимо, это пока не возможно, но предложение для такого API было сделано.
Теперь это возможно через powershell, см. Ответ @ YohanNey: https://stackoverflow.com/a/43658032/4233593 –
Возможно, это поможет кому-то, пока MS не выпустит API. я побежал ProcMon, и кажется, что эти ключи реестра участвуют
Pin для быстрого доступа:
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: я нашел работаю это в «Run» открывает Быстрый доступ:
shell:::{679F85CB-0220-4080-B29B-5540CC05AAB6}
Существует простой способ сделать это в PowerShell (по крайней мере):
$o = new-object -com shell.application
$o.Namespace('c:\My Folder').Self.InvokeVerb("pintohome")
Надеется, что это помогает.
Это сработало, но вы необходимо убедиться, что вы изменили 'C: \ My Folder' на местоположение, существующее в вашей системе. –
Это работает с путями, но не с библиотеками. Если я заменил папку c:/my «% appdata% \ Microsoft \ Windows \ Libraries \ myLibrary.library-ms», она не работает, любая идея? – user1892410
Любые мысли для этого как другого пользователя? (т. е. ps-remoting ) – Hicsy
Ответ Yohan Ney для закрепления элемента является правильным. Чтобы открепить элемент вы можете сделать это:
$QuickAccess = New-Object -ComObject shell.application
($QuickAccess.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Items() | where {$_.Path -eq "C:\Temp"}).InvokeVerb("unpinfromhome")
Вот скрипт я написал, чтобы сделать контактный/открепить немного проще:
https://gallery.technet.microsoft.com/Set-QuickAccess-117e9a89
void PinToHome(const std::wstring& folder)
{
ShellExecute(0, L"pintohome", folder.c_str(), L"", L"", SW_HIDE);
}
, что было легко, по-прежнему не в состоянии чтобы сделать uninfromhome
Мне нравится ответ Йохана, но я добавил немного, чтобы не удалить некоторые предметы, которые уже были там. У меня была тонна, приколотая туда случайно, я, должно быть, выбрал папку с булавкой или что-то вроде быстрого доступа.
$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");
Опираясь на то, что другие сказали ... Это позволяет удалить все возлагали папки (а не только все/последние папки/пункты):
$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")
я нуждался в этом, так что я мог быстро создайте резервную копию/список моих быстрых ссылок. Поэтому я помещаю это в начало моего скрипта (чтобы удалить все закрепленные элементы, тогда остальная часть скрипта снова добавляет их.Это гарантирует правильность заказа.
И да, я уверен, что для приведенного выше кода есть лучший синтаксис.
Я не знаю ответа, извините, но [я не удивлюсь] (http://blogs.msdn.com/b/oldnewthing/archive/2003/09/03/54760.aspx) [если там не было такого интерфейса] (http://blogs.msdn.com/b/oldnewthing/archive/2014/10/29/10568120.aspx). Удачи. – andlabs
Ожидается, что вы этого не сделаете. –
Пожалуйста, обновите принятый ответ теперь, когда это возможно через powershell. См. Ответ @ YohanNey: https://stackoverflow.com/a/43658032/4233593 –