如何重新排序 Windows 10 中资源管理器的新菜单中的项目?

如何重新排序 Windows 10 中资源管理器的新菜单中的项目?

如何将 Windows 10 右键单击​​上下文菜单的新子菜单中的项目移动到分隔线上方?

注册表中有什么需要设置的吗?

右键菜单示例

答案1

在文件类型的键Config下创建一个子键。然后在该子键内,添加一个名为的字符串值。更改应立即生效:ShellNewBeforeSeparator


为了弄清楚这一点,我不得不深入研究 Explorer 代码。shell32.dll包含一个CNewMenu表示“新建”菜单的类,并有一个名为的函数_BeforeSeparator,该函数确定给定的条目是否应放在分隔符之前。以下是该函数反汇编的重要部分(由投资发展协会):

首先它使用PathMatchSpecW查看键名是否为 、 或 之一.lnk.library-ms如果Folder是(红色/左路径),则该项目保证会出现在线上方。如果不是(绿色/右路径),该函数将检查数据结构中10h某个部分(+8)中的某个位( )是否已设置。

我需要找到负责设置该位的代码。有一个函数_GetNewObjectInfoForKey似乎负责设置相关的数据结构。以下是它的部分反汇编代码,几乎就在开头:

它尝试打开一个名为的子项Config,如果成功(红色路径),则使用该_GetConfigFlags函数设置包含我们感兴趣的位的数据结构部分!_GetConfigFlags继续测试各种条目的存在,并在适当的情况下设置各种位。以下是设置目标位的部分(10h):

我们在那里看到所需的条目名称:BeforeSeparator

答案2

如果有人需要注册表文件来添加带有日期的新文件夹,这里是

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\.NewDirectoryBasedOnDate]
@="NewDirectoryBasedOnDate"

[HKEY_CURRENT_USER\Software\Classes\.NewDirectoryBasedOnDate\ShellNew]
"Command"="\"CMD\" /D /E:ON /c for /F \"tokens=1-9 delims=.,\\:/\" %%A IN (\"%%date%%\") DO for /F \"tokens=*\" %%a IN (\"%1\") do md \"%%~dpa\\%%A.%%B.%%C\""
"nullfile"=hex:

[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate]
"FriendlyTypeName"="New Folder With Date"

[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate\DefaultIcon]
@="shell32.dll,3"

[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate\Shell\open]
"LegacyDisable"=hex:

[HKEY_CURRENT_USER\Software\Classes\NewDirectoryBasedOnDate\Shell\open\command]
@="."

[HKEY_CURRENT_USER\Software\Classes\.NewDirectoryBasedOnDate\ShellNew\Config]
"BeforeSeparator"=""

将其保存为 folderwithdate.reg 并运行它。

相关内容