最大的问题是,这安全吗?

最大的问题是,这安全吗?

有没有办法将另一个程序设置为打开文件夹或“我的电脑”时打开的默认程序?我想用另一个程序(例如 FreeCommander)替换 Windows 资源管理器。我尝试查看控制面板选项中的程序关联,但找不到打开文件夹的选项。

我认为某个地方的某个正则表达式可以做到这一点,但我不会手动去搜索。

答案1

总体而言,PHOENiX 的问题是正确的,但有一个问题。注册表项HKEY_CLASSES_ROOT\Folder不仅涵盖目录,还涵盖各种特殊文件夹,例如控制面板等等。它们是 PHOENiX 所写的那些 GUID 字符串。如果您尝试在第三方文件管理器中打开这样的特殊文件夹,它很可能会失败,因此您将无法再使用这些文件夹。

你真正想要的是配置目录驱动器以便在文件管理器中打开。有两个注册表项可用于此目的:

  • HKEY_CLASSES_ROOT\Directory
  • HKEY_CLASSES_ROOT\Drive

以下是将 Total Commander 设置为默认文件管理器的两个示例。单击(例如在“开始”菜单中)、双击(例如在桌面、Windows 文件资源管理器等上)、从其他应用程序打开等时,这两个示例都会导致在 Total Commander 的新选项卡中打开任何目录或驱动器。唯一的区别是第一个使用打开目录/驱动器上下文菜单中的项目,第二个是添加新项目在 Total Commander 中打开将 Total Commander 的图标添加到上下文菜单。

只需将下面的内容复制并粘贴到新文件中,为其添加.reg扩展名并执行即可。当然,您需要确保 Total Commander 可执行文件的路径正确。

检查文档更多细节。

1. 使用默认设置打开物品

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shell]
@="open"

[HKEY_CLASSES_ROOT\Drive\shell\open\command]
@="\"C:\\Program Files\\totalcmd\\TOTALCMD64.EXE\" \"%1\" /T /O /S"

[HKEY_CLASSES_ROOT\Directory\shell]
@="open"

[HKEY_CLASSES_ROOT\Directory\shell\open\command]
@="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE \"%1\" /T /O /S"

2. 添加新的上下文菜单项在 Total Commander 中打开

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shell]
@="TotalCommander"

[HKEY_CLASSES_ROOT\Drive\shell\TotalCommander]
@="Open in Total Commander"

[HKEY_CLASSES_ROOT\Drive\shell\TotalCommander\command]
@="\"C:\\Program Files\\totalcmd\\TOTALCMD64.EXE\" \"%1\" /T /O /S"
"Icon"="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE,0"

[HKEY_CLASSES_ROOT\Directory\shell]
@="TotalCommander"

[HKEY_CLASSES_ROOT\Directory\shell\TotalCommander]
@="Open in Total Commander"
"Icon"="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE,0"

[HKEY_CLASSES_ROOT\Directory\shell\TotalCommander\command]
@="C:\\Program Files\\totalcmd\\TOTALCMD64.EXE \"%1\" /T /O /S"

Total Commander 的命令行参数

上述例子中使用了 4 个命令行参数:

  • "%1":打开的目录/驱动器的路径,应放在引号中,以便正确处理带有空格字符的路径
  • /O:使用现有的 Total Commander 实例,而不是执行新的实例
  • /T:打开新选项卡,而不是重复使用当前活动选项卡
  • /S:打开的目录/驱动器将被视为源,因此它将在当前活动选项卡所在的面板中打开

检查文档了解更多参数。

答案2

通过比较将 Q-Dir 设置为文件资源管理器之前和之后的注册表与“附加功能”菜单中的选项,它实际执行的操作如下(因为该软件似乎不是开源的):

Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell
Change: Added Value
Value: *Q-Dir
Type: REG_SZ

Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir
Change: Added Key

Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir
Change: Added Value (Icon)
Value: C:\Program Files\Q-Dir\Q-Dir.exe
Type: REG_SZ

Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir\command
Change: Added Key

Key: HKEY_LOCAL_MACHINE\Software\Classes\Folder\shell\*Q-Dir\command
Change: Added Value
Value: "C:\Program Files\Q-Dir\Q-Dir.exe" /e>%L>%D>%1>%S>
Type: REG_SZ

它正在创建一个 shell 命令,该命令也会在上下文菜单中,但是,这个命令将是“默认”操作,因此如果你在 Windows 文件资源管理器中打开某个内容,它将在 Q-Dir 中打开。

第一个注册表更改将默认 shell 设置为新创建的*Q-Dirshell 命令。

最后的注册表更改的值具有以下含义:

"C:\Program Files\Q-Dir\Q-Dir.exe"
/e>%L>%D>%1>%S>--使用这些参数执行 Q-Dir.exe

>%L>%D>%1>%S>是命令行变量,下面进一步解释:为上下文菜单编写 shell 命令时可以使用哪些特殊变量

但是,>它们之间的 和/e是 Q-Dir 特有的。Q-Dir 专门实现了一个/e开关,它接受值,以便它可以>根据优先级链中的需要进行拆分和使用。


最大的问题是,这安全吗?

我们不确定,但要谨慎行事。我已经注意到,shell 替换程序可能会提供一个参数,人们可能认为它是一个文件路径,但实际上它是一个奇怪的 GUID 字符串,例如格式为::{123E4567-E89B-12D3-A456-426614174000}\8\::{123E4567-E89B-12D3-A456-426614174000}。例如,如果您在开始菜单中右键单击 -> 卸载应用程序,就会发生这种情况,通常会将其传递给资源管理器(默认 shell)并从那里处理。

处理此问题的一种方法是制作一个中间程序,该程序接受参数,确保它是文件路径,如果不是,则将参数传递给 explorer.exe,而不是打开真正需要的 shell。Q-Dir 等程序直接在其中编写了此程序或类似程序,因此 Q-Dir 不需要此程序。

答案3

不确定 FreeCommander,但是Q-Dir可以选择将该文件管理器设置为默认文件管理器:

在此处输入图片描述

但是,如果作为便携式应用程序运行,该设置有一些限制。例如,Win E启动 Windows 资源管理器,尽管有一个上下文菜单项可以使用 Q-Dir 打开文件夹。

答案4

Erel Segal-Halevi 在他的悬赏中请求一个带有标签的文件管理器。

有许多替代文件管理器,大部分是免费的,其中一些支持选项卡。文章中列出了此类产品及其评论 最佳免费文件管理器. 从这个列表中,Erel 选择了 选项卡栏,它通过选项卡和额外的文件夹视图扩展了 Windows 资源管理器。

甚至存在可以为 Windows 上的任何产品添加选项卡的产品,包括 Windows 资源管理器: 整洁标签任务空间

相关内容