Sau*_*bal 3 windows windows-registry windows-10
如何在 Windows 10 右键单击上下文菜单的“新建”子菜单中将项目移动到分隔线上方?
注册表中有什么需要设置的吗?

Config在ShellNew您的文件类型的项下创建一个子项。然后在该子项内,添加一个名为BeforeSeparator. 更改应立即生效:

为了弄清楚这一点,我不得不深入研究资源管理器代码。shell32.dll包含一个CNewMenu表示新建菜单的类,并有一个名为的函数_BeforeSeparator,用于确定是否应将给定的条目放在分隔符之前。这是该函数反汇编的重要部分(由IDA 提供):

首先,使用PathMatchSpecW,看看键名是一个.lnk,.library-ms或Folder。如果是(红色/左路径),则保证该项目出现在线上方。如果不是(绿色/右路径),则该函数检查数据结构10h的某个部分 ( +8) 中的某个位 ( )是否已设置。
我需要找到负责设置该位的代码。有一个被调用的函数_GetNewObjectInfoForKey似乎负责设置相关的数据结构。这是其拆卸的一部分,几乎就在开头:

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

在那里我们看到了所需的条目名称:BeforeSeparator。
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |