如何使用CMD或Powershell打开“This PC”?

10

我需要一种打开资源管理器定位到“此电脑”(即打开Windows资源管理器的方式),但是使用Explorer.exe命令在CMD中打开的是快速访问,我无法实现这一点。

我尝试了使用快捷方式打开,也失败了。

有谁知道如何做到这一点吗?

谢谢。


1
explorer /e,root,::{20D04FE0-3AEA-1069-A2D8-08002B30309D} - user12431753
那只是为我打开了“文档”库。 - codewario
6个回答

17

就像你可以运行explorer.exe C:\来打开C:(或任何其他驱动器或文件夹路径),你也可以使用file: URI 在资源管理器中打开路径。如果您只指定file:协议而没有目录(或指定file:\\),它将打开此电脑

explorer file:
explorer file:\\

请注意,您还可以从“快速访问”更改默认的资源管理器位置为“此电脑”,也可以通过“文件夹选项”进行更改:

文件夹选项

如果您想要自动化配置此选项,您还可以在注册表中设置它。请参阅我在如何使用PowerShell在注册表中设置默认启动文件夹上的回答。


4

根据我的经验,以下应该可以工作:

Start "" "%SystemRoot%\explorer.exe" /Select,"This PC"

来自 :

Start "$Env:SystemRoot\explorer.exe" "/Select,'This PC'"

1
从技术上讲,@BendertheGreatest,我的经验是调用资源管理器窗口不是瞬间完成的,因此“Start”命令会更快地将控制权返回到“cmd.exe”窗口。在我现在添加的powershell.exe示例中,这也更符合Start-Process的别名。 - Compo
调用资源管理器窗口不是瞬间完成的,但控制台也不会阻塞直到它打开。在PowerShell中使用Measure-Command进行一些时间测试,显示两种方法返回到shell的时间大致相同,其中explorer '/root,'在10-20毫秒之间略微领先。也许你的方法在较慢的系统上更快,但在我看来,增加的复杂性不值得性能的牺牲。 - codewario

2

On Powershell, we can do this:

(New-Object -ComObject Shell.Application).Namespace("").Self.InvokeVerb()

我们创建了一个Shell.Application类的组件对象,然后调用.InvokeVerb()方法来调用默认动作"open"。
或者更加严谨地说,通过定义ssfDRIVES常量(参见Microsoft reference)。
Set-Variable ssfDRIVES -Option Constant -Value 0x11
(New-Object -ComObject Shell.Application).Namespace($ssfDRIVES).Self.InvokeVerb()

ssfDRIVES 0x11(17)。命名空间指向“我的电脑”——虚拟文件夹,其中包含本地计算机上的所有内容:存储设备、打印机和控制面板。此文件夹还可以包含映射的网络驱动器。

这是一种有趣的打开“我的电脑”资源管理器的方法。然而,我建议其他人不要使用此方法,除非您正在使用一个已经存在的 Shell.Application 实例。否则,这是对 COM 对象的不必要使用,并且有更简单、不那么复杂的方法。 - codewario

2

打开命令提示符并输入以下内容:

explorer =

2
您可以在命令提示符中使用以下内容:
Explorer /root,

0

所有的评论都是使用 Powershell 7,我不知道它是否适用于 Windows Powershell 5.1。当然,它使用的是 Windows 终端:

一些背景信息

主要是为了文档目的,你可以跳至下一个标题(-->下一个 h2)

$shell = New-Object -ComObject Shell.Application
$thisPCFolder = $shell.Namespace(0x11)

(0x11)与20D04FE0-3AEA-1069-A2D8-08002B30309D相同

所以第二行与之相同

$thisPCFolder = $shell.NameSpace('::{20D04FE0-3AEA-1069-A2D8-08002B30309D}')

使用任意一个。

请注意,This PC不是一个真实的文件夹,而是一个虚拟文件夹,因此您需要使用Shell.Application COM对象。

Shell.Application COM对象使用这些数字表示来访问Windows Shell中的特定特殊文件夹和命名空间。这是第一个代码块。

所以0x11并不是唯一一个可以使用这些常量的Windows Shell API,它们可以在Shlobj.h头文件中找到,该文件是Windows软件开发工具包(SDK)的一部分。像这些常量:

  • 0x00 - 桌面
  • 0x02 - 程序
  • 0x03 - 控制面板
  • 0x04 - 打印机
  • 0x05 - 我的文档(文档)
  • 0x06 - 收藏夹
  • 0x07 - 启动文件夹
  • 0x08 - 最近项目
  • 0x09 - 发送到
  • 0x0a - 回收站
  • 0x0b - 开始菜单
  • 0x0d - 我的音乐
  • 0x0e - 我的视频
  • 0x0f - 桌面(特定用户)
  • 0x10 - 控制面板(虚拟文件夹)
  • 0x11 - 此电脑(虚拟文件夹)
  • 0x12 - 网络
  • 0x13 - 字体
  • 0x14 - 我的电脑
  • 0x15 - 我的网络位置

所以您不需要下载任何模块或其他东西,只需安装 Powershell 7 并在您的计算机上执行代码即可。

所以为了枚举磁盘,我做了以下操作:

# Create a new instance of Shell.Application
$shell = New-Object -ComObject Shell.Application

# Get the "This PC" folder
$thisPCFolder = $shell.Namespace(0x11)

# Enumerate through the items in "This PC" folder
foreach ($item in $thisPCFolder.Items()) {
    # Display the name and path of each item
    $name = $thisPCFolder.GetDetailsOf($item, 0)
    $path = $thisPCFolder.GetDetailsOf($item, 217)
    Write-Output "$name : $path"
}


在我执行时,将这个打印到我的终端上:
Local Disk (C:) :
name_of_your_disk_D (D:) :

你可以跳过这个 作为真实代码应用的使用示例,你可以阅读并查看如何在0x11上使用github code file,目前在第40行 ........

或者,如果你已经知道你的磁盘名称,你可以直接使用Start-Process C:\Start-Process D:\,然后按下Alt + ↑

真正的教程

但是你可能真正想要的答案是,将这个代码块复制粘贴到你的PowerShell中,看看会发生什么:

# Use the Start-Process cmdlet to open "This PC" (My Computer) in Windows Explorer
Start-Process "explorer.exe" "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

现在您可以为此最后的代码块使用别名,然后将其放在$PROFILE上,以便每次打开Shell时都适用,而不仅仅是一个会话。这样做的方法如下:

  • 首先确认您是否有$PROFILE:
Test-Path $PROFILE

如果为False,您需要创建一个文件,请运行:
New-Item -ItemType File -Path $PROFILE -Force

现在你需要打开记事本来插入代码。
notepad.exe $PROFILE

如果你已经有一些代码,请将此复制粘贴到最后一行。
function MyPC {
    Start-Process "explorer.exe" "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
}

重新启动你的PowerShell 7终端,如果你不想关闭终端并再次打开它,可以使用以下命令重新加载它:
. $PROFILE

现在每次您在 PowerShell 7 终端中使用别名 MyPC,它将在新的 Windows Explorer 窗口中打开 This PC
编辑:所以我刚刚阅读了上面的答案(这是这里得票最多的答案),所以基本上您只需转到 文件夹选项 并从 主页 更改为 This PC,然后在 PowerShell 中键入 explorer,它将带您进入 This PC
来源:https://www.elevenforum.com/t/list-of-windows-11-clsid-key-guid-shortcuts.1075/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接