文件类型处理器中的程序路径必须是全路径
创始人
2025-05-30 23:02:18

很多人可能还没有意识到这一点,但是在 Windows XP SP2 中,我们对文件类型处理器添加了这样一条要求:即如果文件处理器程序不在 Windows 目录或者不在 System 目录中的时候,注册该处理器程序的路径必须全路径,而不是相对路径。

为什么会有这个要求?

原因是出于对安全性的考虑,并和”可预测性”有一丝关系。

我们先说安全性,SearchPath 这个 API 会在当前目录下查找文件,并且它会在查找系统目录或 PATH 环境变量目录之前查找当前目录。这意味着,如果攻击者创建一个富有诱惑性的文件名,如”机密文件.txt”,并在当前目录下创建一个隐藏的 Notepad.exe 执行文件,会出现安全问题。

用户看到这个 “机密文件.txt”,会忍不住好奇着打开它,当他双击打开这个文件时,隐藏在当前目录下的 Notepad.exe 会首先被执行,而不是系统目录下正牌程序。

所以,基于以上的原因,我们添加了对文件全路径的要求,这样就有效的规避了上述安全问题。

下面我们说说可预测性,因为 PATH 环境变量可能随着进程的不同而各不相同。因此,相对路径可以解析为不同的程序,具体取决于谁在询问。

这反过来又导致必须解决诸如“当我从资源管理器双击它时它有效,但如果从批处理文件运行它则不起作用”等问题。

总结

从我的经验来说,相对路径在跨环境文件定位时还是十分有用的。
如果你希望得到某种确定性,则使用全路径会比较合适。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Program names in file type handlers need to be fully-qualified》

 

相关内容

热门资讯

日本财务大臣就日元走弱发出警告... 来源:环球市场播报 在日本央行当天稍早宣布加息并召开新闻发布会后,日元兑美元明显走软,日本财务大臣...
特朗普五天圣诞长假期不会惠及大... 来源:环球市场播报 特朗普总统签署行政命令,允许联邦雇员今年12月24日和12月26日放假,这引发...
小米17 Ultra发布在即,... 12月18日,小米公司通过官方微博宣布与徕卡的全球影像战略合作正式升级,此次升级引入全新的“战略共创...
视频丨高市早苗持续遭批,日本民... 日本首相高市早苗的涉台错误言论引发日本国内持续批评。19日,部分日本民众在东京举行抗议集会,要求高市...
一场千万美元的赌注:造一个替你... 出品|虎嗅科技组作者|李一飞编辑|陈伊凡头图|视觉中国“AI原生100”是虎嗅科技组推出针对AI原生...