AntiShiftDelete是一款禁用Shift+Delete永久删除的快捷键工具,很多朋友习惯性用Shift+Delete永久删除,永久删除自然有不好恢复的弊端,使用这个工具可以禁用操作来改善习惯!
开发介绍
用电脑这么多年来,我习惯了用Shift+Delete这个快捷键永久删除文件,回收站几乎就没用过……
但是前一阵有一次我手残,本想删一个文件,但是选择的时候删了旁边一整个文件夹。电脑的SSD启用了TRIM,数据恢复软件扫描不出来……
因此我就想要禁用Shift+Delete快捷键,改掉这个坏习惯。但是我搜了一下,发现好像没有什么好方法?
网上看到的方法都是键盘钩子之类的,但是键盘钩子有时好用有时失灵,而且影响了其他软件使用这个快捷键(比如Chrome地址栏,和VisualStudio)。
因此我就决定自己写一个程序禁用Shift+Delete快捷键。
基本简介
简介
AntiShiftDelete是一个ShellExtension,它的功能是禁用永久删除(Shift+Delete)快捷键。
有一些人(包括我自己)都惯用永久删除快捷键,从来不把文件删到回收站。然而,这并不是什么好习惯,如果我们删错了文件,这会给我们带来很多麻烦,反复做无用功……
AntiShiftDelete扩展便是帮助我们摆脱这个坏习惯的有力助手!安装这个扩展之后,当我们再次使用Shift+Delete快捷键删除文件时,资源管理器不会删除文件,而是会发出一声提示音,提醒你使用正常的删除功能。
原理
AntiShiftDelete使用了微软Detours库来Hook资源管理其内部的删除方法。所以,AntiShiftDelete需要是一个ShellExtension,因为ShellExtension会被资源管理器自动加载。
ShellExtension
ShellExtension有很多种,不过为了让explorer.exe尽快加载插件,我选择使用IconOverlayHandler(实现IShellIconOverlayIdentifier),因为这种扩展可以在explorer.exe启动时直接加载。
Hook
MicrosoftDetours库使用起来很方便,我也不打算多说。在资源管理器Hook的方法倒是挺有趣的。
在WindowsVista,7,8,8.1,10和对应的服务器版本中,explorer.exe不会直接调用WindowsAPI来操作文件而是使用FileOperation这个COM组件来操作文件。AntiShiftDelete便是Hook了FileOperation的虚函数达到阻止永久删除的目的。
兼容性
理论上,WindowsVista及以上版本x86和x64还有对应的服务器版本,都能使用这个扩展。但是我不确定是否真的能兼容这么多……
桌面版本:WindowsVista,Windows7,Windows8,Windows8.1,Windows10
服务器版本:Server2008,Server2008R2,Server2012,Server2012R2,Server2016