我需要一种打开资源管理器定位到“此电脑”(即打开Windows资源管理器的方式),但是使用Explorer.exe命令在CMD中打开的是快速访问,我无法实现这一点。
我尝试了使用快捷方式打开,也失败了。
有谁知道如何做到这一点吗?
谢谢。
我需要一种打开资源管理器定位到“此电脑”(即打开Windows资源管理器的方式),但是使用Explorer.exe命令在CMD中打开的是快速访问,我无法实现这一点。
我尝试了使用快捷方式打开,也失败了。
有谁知道如何做到这一点吗?
谢谢。
就像你可以运行explorer.exe C:\
来打开C:
(或任何其他驱动器或文件夹路径),你也可以使用file:
URI 在资源管理器中打开路径。如果您只指定file:
协议而没有目录(或指定file:\\
),它将打开此电脑
:
explorer file:
explorer file:\\
请注意,您还可以从“快速访问”更改默认的资源管理器位置为“此电脑”,也可以通过“文件夹选项”进行更改:
如果您想要自动化配置此选项,您还可以在注册表中设置它。请参阅我在如何使用PowerShell在注册表中设置默认启动文件夹上的回答。
根据我的经验,以下应该可以工作:
从 cmd:
Start "" "%SystemRoot%\explorer.exe" /Select,"This PC"
来自 powershell:
Start "$Env:SystemRoot\explorer.exe" "/Select,'This PC'"
powershell.exe
示例中,这也更符合Start-Process
的别名。 - CompoMeasure-Command
进行一些时间测试,显示两种方法返回到shell的时间大致相同,其中explorer '/root,'
在10-20毫秒之间略微领先。也许你的方法在较慢的系统上更快,但在我看来,增加的复杂性不值得性能的牺牲。 - codewarioOn Powershell, we can do this:
(New-Object -ComObject Shell.Application).Namespace("").Self.InvokeVerb()
Set-Variable ssfDRIVES -Option Constant -Value 0x11
(New-Object -ComObject Shell.Application).Namespace($ssfDRIVES).Self.InvokeVerb()
Shell.Application
实例。否则,这是对 COM 对象的不必要使用,并且有更简单、不那么复杂的方法。 - codewario打开命令提示符并输入以下内容:
explorer =
Explorer /root,
所有的评论都是使用 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)
的一部分。像这些常量:
所以您不需要下载任何模块或其他东西,只需安装 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时都适用,而不仅仅是一个会话。这样做的方法如下:
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}"
}
. $PROFILE
MyPC
,它将在新的 Windows Explorer 窗口中打开 This PC
。文件夹选项
并从 主页
更改为 This PC
,然后在 PowerShell 中键入 explorer
,它将带您进入 This PC
。
explorer /e,root,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
- user12431753