作为后续行动这个问题,有什么方法可以防止 Windows 资源管理器使用导航面板中的用户文件夹而不是正确的路径?
在 Windows 10 上,当您在 Windows 资源管理器中单击“展开以打开文件夹”时的快速访问文件夹时,如果该文件夹位于用户文件夹内,则它会在导航窗格中的用户文件夹中打开它,而不是在文件结构中打开该文件夹。
我需要保留“展开以打开文件夹”,否则当您沿树向上移动时,您会丢失导航窗格中的上下文和导航选项。
Windows 10 上的导航窗格是否完全损坏?为什么我不能使用快速访问转到真实路径?为什么我不能一劳永逸地从导航窗格中删除用户文件夹?
答案1
好的,我创建了两个上下文菜单选项。第一个比较简单 --- 只需编辑注册表。唯一的缺点是它会打开一个新窗口,而不是在现有窗口中导航。以下内容可以复制并粘贴到记事本中,保存为 .reg 文件,然后合并到注册表中:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenFSFolder]
@="Open file folder (new window)"
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenFSFolder\command]
@="explorer.exe \"%V\""
[HKEY_CLASSES_ROOT\Directory\shell\OpenFSFolder]
@="Open file folder (new window)"
[HKEY_CLASSES_ROOT\Directory\shell\OpenFSFolder\command]
@="explorer.exe \"%V\""
第二个是依赖于 PowerShell 脚本的注册表编辑。优点是它在打开的 Explorer 窗口中导航 --- 如果您刚刚将 Explorer 打开到“快速访问”或“此 PC”,则非常理想。缺点是您会看到 PowerShell 窗口的闪烁,并且如果您打开了多个 Explorer 窗口,它就不“智能” --- 无论您从哪个窗口启动它,它都会对最近打开的窗口起作用。PowerShell 脚本文本如下:
Function GoTo-FSFolder {
param (
[Parameter(Mandatory=$true)][string]$FSpath
)
If ($ShellWindows = ((New-Object -ComObject Shell.Application).Windows()) | ?{$_.Name -match 'File Explorer'})
{ If (!($ShellWindows.Count)) # Only one Explorer window (no count property)
{$ShellWindows.Navigate($FSpath)}
Else {$ShellWindows[-1].Navigate($FSpath)} # Count > 1: Use last opened window
}
Else {explorer $FSpath} # No Explorer windows open
}
GoTo-FSFolder $args[0]
这应该被保存为“GoToFSFolder.ps1”,保存在您选择的文件夹中。然后应应用以下注册表编辑:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\GoToFSFolder]
@="Go to file folder (PowerShell)"
[HKEY_CLASSES_ROOT\Directory\Background\shell\GoToFSFolder\command]
@="powershell.exe -nologo -NoProfile -WindowStyle Hidden -file \"C:\\Users\\keith\\Documents\\WindowsPowerShell\\GoToFSFolder.ps1\" \"%V\""
[HKEY_CLASSES_ROOT\Directory\shell\GoToFSFolder]
@="Go to file folder (PowerShell)"
[HKEY_CLASSES_ROOT\Directory\shell\GoToFSFolder\command]
@="powershell.exe -nologo -NoProfile -WindowStyle Hidden -file \"C:\\Users\\keith\\Documents\\WindowsPowerShell\\GoToFSFolder.ps1\" \"%V\""
应编辑命令字符串中的文件路径以匹配您保存“GoToFSFolder.ps1”的位置——这可以在合并之前或之后完成。请注意,.reg 文件命令字符串包含转义字符:“\”(斜杠)和“\"”(双引号)。合并后,
"powershell.exe -nologo -NoProfile -WindowStyle Hidden -file \"C:\\Users\\keith\\Documents\\WindowsPowerShell\\GoToFSFolder.ps1\" \"%V\""
变成:
powershell.exe -nologo -NoProfile -WindowStyle Hidden -file "C:\Users\keith\Documents\WindowsPowerShell\GoToFSFolder.ps1" "%V"
因此合并后,您可能会发现通过注册表编辑器进行编辑会更容易。最终结果: 直接导航至:
虽然这不是你想要的,但我认为这些会减轻你的挫败感。
包含所有文件和撤消文件的 zip 文件在此处:添加OpenFSFolder.zip
基思
答案2
我在研究中偶然发现了这篇文章,既然我找到了解决方案,我想分享一下。很抱歉把这个挖出来,但它可能会帮助下一个遇到同样问题的人。
发现于:
https://www.winhelponline.com/blog/show-full-path-explorer-address-bar-special-folders-windows-10/
编辑注册表:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions{f3ce0f7c-4901-4acc-8648-d5d44b04ef8f}
键:“ParsingName”
以前的值:“::{59031a47-3f72-44a7-89c5-5595fe6b30ee}”
新值:“-”
这将删除用户文件夹路径的“缩写”名称。某些文件夹(如“下载”、“音乐”、“图片”等)存在此类名称...示例: 缩短桌面路径
此 Powershell 代码更改了所有“缩短”的路径。注释掉您想要保留的路径。:
$specialFolders = @(
"754AC886-DF64-4CBA-86B5-F7FBF4FBCEF5", #Desktop
"f42ee2d3-909f-4907-8871-4c22fc0bf756", #Documents
"7d83ee9b-2244-4e70-b1f5-5393042af1e4", #Downloads
"a0c69a99-21c8-4671-8703-7934162fcf1d", #Music
"0ddd015d-b06c-45d5-8c4c-f59713854639", #Pictures
"35286a68-3c57-41a1-bbb1-0eae73d76c95", #Videos
"A52BBA46-E9E1-435f-B3D9-28DAA648C0F6", #OneDrive
"f3ce0f7c-4901-4acc-8648-d5d44b04ef8f" #User profile path
)
foreach($specialFolder in $specialFolders){
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{$specialFolder}" /v ParsingName /t REG_SZ /d - /f
}
Stop-Process -processName: Explorer -force