Eu gostaria muito de adicionar a "Lixeira" à área "Acesso rápido" do File Explorer usando o PowerShell (já que isso é uma coisa padrão que eu gosto de ter em todos os novos sistemas). Adicionar ao "Acesso rápido" é simples:
$oShell = New-Object -ComObject Shell.Application
$oShell.Namespace("C:\ProgramData\chocolatey\lib").Self.InvokeVerb("PinToHome")
O problema é que a "Lixeira" não é uma pasta normal, claro. No entanto, pode ser acedido da seguinte forma:
$oShell = New-Object -ComObject Shell.Application
$rb = $oShell.Namespace(10)
Mas adicionar a "Acesso rápido" com $rb.Self.InvokeVerb("PinToHome")
não funciona.
Por favor, alguém pode me mostrar como adicionar programaticamente a "Lixeira" em "Acesso rápido". Eu sei que isso pode ser feito, pois arrastar o item da área de trabalho para o File Explorer funciona, então deve haver alguma maneira programável de conseguir isso também?
Este não é realmente um problema de código PS, nem programático. É uma limitação/impedimento específico do sistema operacional.
O Windows Explorer é um programa e, portanto, possui recursos que fornece diretamente que podem ou não estar disponíveis fora dele.
Se a Microsoft não fornecer um identificador para fazer isso, será necessário muitos hackers relevantes para o Windows Explorer para descobri-lo.
Pessoalmente, não consigo ver um caso de uso para esse esforço de fixação, pois já está disponível na área de trabalho, no menu Iniciar e pode-se fixar na barra de tarefas para acesso rápido, mas todos nós temos nossas razões para a abordagem / abordagem X ou Y.
Quando você explora os recursos do Windows Explorer. Por exemplo, conforme documentado aqui: Shell.Explore,Method; você pode determinar a partir disso, que no Windows Explorer, pode-se fazer coisas assim na entrada do caminho para chegar aos tempos da pasta. shell: enviar para.
No entanto, se você tentasse isso para Recycle, shell:desktop\Recycle Bin, isso falharia, pelo motivo já mencionado. Portanto, você precisa se aprofundar nesses documentos para outras possibilidades. RB é apenas um .lnk para uma chamada de aplicativo.
Mesmo como observado pelo seu post:
Se for mais fundo...
Você pode ver o problema com seu caso de uso.
Para todas as pastas especiais do Windows Explorer, existem estas:
... e observe que o Acesso Rápido e similares não é um deles. Portanto, shell: , não é uma opção para ele, assim como para vários outros nessa lista.
Atualizar
Então, de acordo com meu comentário... Você pode manipular qualquer coisa que você criar. ...ao seu comentário de uso GUID. Você pode então apenas fazer isso:
Isso colocará esse novo diretório na lista de acesso rápido, apenas pelo nome sem o GUID, até que você veja suas propriedades. No entanto, adivinhe o que acontece se você tentar limpar/remover essa pasta criada manualmente? No momento em que você fecha e reinicia o Windows Explorer, ele desaparece, junto com o pino no controle de qualidade.
Então, isso significa que uma vez que você crie esse objeto de pasta, ele nunca poderá ser removido. Portanto, para evitar que outros o excluam, você deve ocultá-lo ou protegê-lo. Assim, coisas assim...
Atualizar
Conforme o comentário. Usando o $env:windir, recebo o mesmo. Nenhum GUID, independentemente das configurações de exibição, salve o Tiles que ainda mostra apenas o caminho.
Conforme demonstrado, tudo isso é feito no ambiente pristine do Windows Sandbox.
Src: Pin Recycle Bin to Quick Access usando InvokeVerb
Tente isto: