我非常想使用 PowerShell 将“回收站”添加到文件资源管理器的“快速访问”区域(因为这是我喜欢在所有新系统上拥有的标准东西)。添加到“快速访问”很简单:
$oShell = New-Object -ComObject Shell.Application
$oShell.Namespace("C:\ProgramData\chocolatey\lib").Self.InvokeVerb("PinToHome")
问题是“回收站”当然不是一个普通的文件夹。但是,可以按如下方式访问它:
$oShell = New-Object -ComObject Shell.Application
$rb = $oShell.Namespace(10)
但是添加到“快速访问”$rb.Self.InvokeVerb("PinToHome")
不起作用。
请有人告诉我如何以编程方式将“回收站”添加到“快速访问”中。我知道这是可以做到的,因为将项目从桌面拖到文件资源管理器上是可行的,所以必须有一些可编程的方式来实现这一点吗?
这真的不是 PS 代码问题,也不是程序问题。这是特定于操作系统的限制/障碍。
Windows 资源管理器是一个程序,因此具有它直接提供的功能,这些功能可能在它之外可用,也可能不可用。
如果 Microsoft 不提供执行此操作的句柄,则需要大量与 Windows Explorer 相关的黑客攻击才能发现它。
我个人看不到这种固定工作的用例,因为它已经在您的桌面、开始菜单中可用,并且可以固定到任务栏以便快速访问,但我们都有 X 或 Y 事物/方法的原因。
当您挖掘 Windows 资源管理器功能时。例如,如此处所述:Shell.Explore,Method; 您可以从中确定,在 Windows 资源管理器中,可以在路径输入中执行类似的操作来获取文件夹时间。外壳:发送到。
但是,如果您尝试对 Recycle, shell:desktop\Recycle Bin 进行此操作,则将失败,原因已经说明。因此,您需要进一步深入研究此类文档以获取任何其他可能性。RB 只是应用调用的 .lnk。
即使如您的帖子所述:
如果深入...
您可以看到您的用例的问题。
对于所有 Windows 资源管理器特殊文件夹,有这些:
...并请注意,快速访问等不是其中之一。因此,shell:不是它以及该列表中的其他几个选项的选项。
更新
所以,根据我的评论...... 你可以操纵你创造的任何东西。 ...到您的 GUID 使用评论。然后你可以这样做:
这将把这个新目录放在快速访问列表中,仅按名称而没有 GUID,直到您查看它的属性。但是,猜猜如果您尝试清理/删除手动创建的文件夹会发生什么?关闭并重新启动 Windows 资源管理器的那一刻,它和 QA 中的 pin 一起消失了。
因此,这意味着一旦您创建了该文件夹对象,就永远无法删除它。因此,为了防止他人删除它,您必须隐藏或保护它。因此,像这样的东西......
更新
根据评论。使用 $env:windir,我得到了同样的结果。无论视图设置如何,都没有 GUID,保存仍然只显示路径的 Tiles。
正如演示的那样,这一切都是在 Windows Sandbox 原始环境中完成的。
Src:使用 InvokeVerb 将回收站固定到快速访问
尝试这个: