2015-05-05 7 views
11

По-видимому, Microsoft (вроде) заменила элемент «Избранное» Windows Explorer элементом быстрого доступа. Но я не смог найти способ программно добавлять туда папки (ни на Google, ни на MSDN). Разве это еще не так?Возможно ли программно добавить папки в панель быстрого доступа Windows 10 в окне проводника?

+1

Я не знаю ответа, извините, но [я не удивлюсь] (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

+0

Ожидается, что вы этого не сделаете. –

+0

Пожалуйста, обновите принятый ответ теперь, когда это возможно через powershell. См. Ответ @ YohanNey: https://stackoverflow.com/a/43658032/4233593 –

ответ

4

Я получил ответ здесь:

Windows 10 - Programmatically use Quick Access

Видимо, это пока не возможно, но предложение для такого API было сделано.

+0

Теперь это возможно через powershell, см. Ответ @ YohanNey: https://stackoverflow.com/a/43658032/4233593 –

4

Возможно, это поможет кому-то, пока 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} 
7

Существует простой способ сделать это в PowerShell (по крайней мере):

$o = new-object -com shell.application 
$o.Namespace('c:\My Folder').Self.InvokeVerb("pintohome") 

Надеется, что это помогает.

+0

Это сработало, но вы необходимо убедиться, что вы изменили 'C: \ My Folder' на местоположение, существующее в вашей системе. –

+0

Это работает с путями, но не с библиотеками. Если я заменил папку c:/my «% appdata% \ Microsoft \ Windows \ Libraries \ myLibrary.library-ms», она не работает, любая идея? – user1892410

+0

Любые мысли для этого как другого пользователя? (т. е. ps-remoting ) – Hicsy

2

Ответ 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

0
void PinToHome(const std::wstring& folder) 
{ 
    ShellExecute(0, L"pintohome", folder.c_str(), L"", L"", SW_HIDE); 
} 

, что было легко, по-прежнему не в состоянии чтобы сделать uninfromhome

1

Мне нравится ответ Йохана, но я добавил немного, чтобы не удалить некоторые предметы, которые уже были там. У меня была тонна, приколотая туда случайно, я, должно быть, выбрал папку с булавкой или что-то вроде быстрого доступа.

$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"); 
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") 

я нуждался в этом, так что я мог быстро создайте резервную копию/список моих быстрых ссылок. Поэтому я помещаю это в начало моего скрипта (чтобы удалить все закрепленные элементы, тогда остальная часть скрипта снова добавляет их.Это гарантирует правильность заказа.

И да, я уверен, что для приведенного выше кода есть лучший синтаксис.