SOLVED - AutomaticDestinations Edits For Quick Access

Quick Access is jump lists, which are written in OLE CF binary format.
There's a handful of tools for dumping contents, but no editors. Yeah, it's not really portable across different users...
 
Quick Access is jump lists, which are written in OLE CF binary format.
There's a handful of tools for dumping contents, but no editors. Yeah, it's not really portable across different users...

Found a way but need help for variable path.

Edited.
 
Last edited:
I'm guessing you've read:
Is it possible programmatically add folders to the Windows 10 Quick Access panel in the explorer window?

COM objects are only accessible via VBS, .NET or PS methods.
Here's my version, watch the script making its changes. :p
Code:
$MyPath = $env:USERPROFILE + "\NewFolder"

$qa = New-Object -ComObject shell.application
$qa.Namespace("shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}").Self.InvokeVerb("Open")

Start-Sleep 3
$qa.Namespace($MyPath).Self.InvokeVerb("pintohome")

Start-Sleep 3
($qa.Namespace("shell:::{679F85CB-0220-4080-B29B-5540CC05AAB6}").Items() | Where-Object { $_.Path -like $MyPath }).InvokeVerb("unpinfromhome")

PS matching operators -eq, -match, -like have different behavior, especially if you got backslashed filenames.
 
Clear Solution For Everyone To Use, thanks to garlin & abbodi
I think this was a "thing" we should have solve since we were able to literally edit anything (startmenulayout, sendtomenu, createnewmenu) but this.
Now we can edit this one too.

To Pin From PowerShell (For Exp Pictures Folder)
$p=$env:USERPROFILE + "\Pictures"; $o = New-Object -Com shell.application; $o.Namespace($p).Self.InvokeVerb("pintohome")

To Pin From CMD (For Exp Pictures Folder)
>nul powershell -noprofile -executionpolicy bypass -command "$p=$env:USERPROFILE + '\Pictures'; $o = New-Object -Com shell.application; $o.Namespace($p).Self.InvokeVerb('pintohome')"

To UnPin From PowerShell (For Exp Pictures Folder)
$p=$env:USERPROFILE + "\Pictures"; $o = New-Object -Com shell.application; ($o.Namespace("shell:::{679F85CB-0220-4080-B29B-5540CC05AAB6}").Items() | Where-Object { $_.Path -like $p }).InvokeVerb("unpinfromhome")

To UnPin From CMD (For Exp Pictures Folder)
>nul powershell -noprofile -executionpolicy bypass -command "$p=$env:USERPROFILE + '\Pictures'; $o = New-Object -Com shell.application; ($o.Namespace('shell:::{679F85CB-0220-4080-B29B-5540CC05AAB6}').Items() | Where-Object { $_.Path -like $p }).InvokeVerb('unpinfromhome')"

Some Example Paths For PowerShell Version: (Change Orange Paths With Them)
User Folder: $env:USERPROFILE
Desktop Folder: $env:USERPROFILE + "\Desktop"
Documents Folder: $env:USERPROFILE + "\Documents"
Pictures Folder: $env:USERPROFILE + "\Pictures"
Music Folder: $env:USERPROFILE + "\Music"
Videos Folder: $env:USERPROFILE + "\Videos"
Folder Named X In Root Of Drive C: "C:\X"

Some Example Paths For CMD Version: (Change Orange Paths With Them)
User Folder: $env:USERPROFILE
Desktop Folder: $env:USERPROFILE + '\Desktop'
Documents Folder: $env:USERPROFILE + '\Documents'
Pictures Folder: $env:USERPROFILE + '\Pictures'
Music Folder: $env:USERPROFILE + '\Music'
Videos Folder: $env:USERPROFILE + '\Videos'
Folder Named X In Root Of Drive C: 'C:\X'
 
Last edited:
The Stack Overflow question mentions Johan Carlsson's PS script (which has better error handling).
For those who can't do scripting.
 
Last edited:
Back
Top