我最终屈服了,决定将 XP 更新到 SP3。SP2+ 让我困扰并导致我拖延了这么久的一个问题是它需要文件类型和 Explorer 动词的完全限定路径。
例如,在 SP1 中,您可以执行以下操作:
REGEDIT4
[HKCR\txtfile\shell]
"@"="Notepad2"
[HKCR\txtfile\shell\Notepad2]
"@"="notepad2.exe %1"
假设notepad2.exe
在路径中,那么您可以通过直接运行它或选择来打开一个文本文件记事本2从其上下文菜单中。
在 SP2+ 中,这将不起作用并显示打开用…对话框。要修复此问题,您必须使用可执行文件的完全限定路径:
[HKCR\txtfile\shell\Notepad2]
"@"="e:\tools\editors\text\notepad2\notepad2.exe %1"
这一变化(使得PATH
变量基本上毫无意义)是 SP2 中增加的安全增强功能重大安全更新,并且它有意义,因为它可以防止路径注入攻击。
然而,这样做的麻烦比它本身的价值更大,因为如果病毒可以修改你的系统路径变量,那么它就已经获得了对系统的访问权限,可以做任何它想做的事情。此外,它只影响 Explorer;从命令提示符运行程序仍然像以前一样有效。此外,它只对基本的命令;也就是说,如果infectednotepad.exe
在路径中,则以下命令仍然有效:
"@"="e:\tools\misc\shellexecute.exe /c infectednotepad.exe %1"
这一变化实际上并没有提供任何额外的安全性;相反,它所做的只是让用户不得不花费数小时扫描 6-10 个不同位置的注册表,这些位置可以注册文件类型、应用程序和 Explorer 动词,搜索不合格的路径并替换每一个(只替换主条目HKCR
是不够的,因为其他位置的级别会使问题更加复杂和混乱)。
此外,微软显然意识到他的“功能”毫无意义,因此他们在 Vista 中将其删除。在 Windows 7 中,第一个例子就像在 SP1 中一样工作。
对于已经配置并使用一段时间的系统来说,“修复”这些问题可能是一项艰巨的任务,尤其是在添加了第三方程序的情况下。
有没有办法关闭这个“功能”并让PATH
变量再次发挥作用?
答案1
启动到安全模式。
导出整个注册表。
关闭电脑。
在另一个框中,编写正则表达式或简单脚本来扫描令牌并插入 FQP。
再次以安全模式启动,导入修改后的注册表配置单元。
祈祷并重新启动。