Has*_*ziz 9 windows windows-registry windows-7 context-menu regedit
在 Windows 注册表中,将LegacyDisable字符串值添加到键的目的是指示 Windows 忽略键、其值及其任何子键和子值,从而有效地禁用它。
例如,将LegacyDisable字符串值添加到以下键:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\opennewwindow
Run Code Online (Sandbox Code Playgroud)
...禁用opennewwindow,从 Windows 资源管理器的上下文菜单中删除“在新窗口中打开”项。CCleaner的上下文菜单清理工具也LegacyDisable用于此目的。
但是,关于字符串值的文档似乎不存在;我根本无法找到任何记录它的内容,无论是在这里还是通过 Google,所以我对它的来源感到困惑,是否禁用注册表项就是它的全部目的,以及为什么它没有记录.
禁用注册表项LegacyDisable的唯一目的是什么?
当用于禁用注册表项时,它的行为与 CCleaner 使用的其他方法有何不同 - 将纯文本添加到字符串值的十六进制数据?为什么 CCleaner 使用这两种方法?
我在 LegacyDisable 上做了一些调查工作,我将在下面详细介绍。
Microsoft 在Verbs and File Associations - Registering Verbs for Backward Compatibility 一文中记录了此方法 :
某些应用程序可能会在注册表中搜索不再使用的动词键。为此,可以将这些键保留在注册表中,并将 LegacyDisable 值添加到动词的键中,这会告诉系统该动词不是实际的动词,而存在只是为了向后兼容。
此处显示了 LegacyDisable 值的使用。该值只需要存在;它可以是任何值类型(尽管 REG_NONE 最合适)并且不需要任何数据与之关联。如果数据存在,则将其忽略。
Run Code Online (Sandbox Code Playgroud)* KEY_CLASSES_ROOT * Application * shell * open (Default) = &Open LegacyDisable * command (Default) = command line
LegacyDisable 的使用似乎仅限于禁用 shell 上下文动词,因为它始终仅在此上下文中描述。
此方法由实用程序ShellMenuView使用,其中显示“Windows 98 不支持此注册表项”,因此它似乎起源于 Windows NT。
我在两本书中发现了这种方法:
看到要删除的上下文菜单项吗?只需删除相应的操作键(例如,新建、打开、打印),它就会立即消失。更好的是,将名为 LegacyDisable 的字符串值添加到键中以将其隐藏在 Windows 资源管理器中,而无需删除任何内容。
在这些位置下,您将看到已插入上下文菜单的第三方软件的子项。有几种方法可以处理它们。您可以删除密钥以完全删除它们。要强制它们仅在 Shift+右键单击时显示,请为每个名为“Extended”的字符串添加一个值,或者将它们保留在注册表中但禁用它们,请添加一个名为“LegacyDisable”的字符串值。
我认为这就是可以为 LegacyDisable 找到的所有有用信息。
至于为什么CCleaner采用这种方法和另一种销毁密钥的方法,我只能做出两个猜想:
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |