它是带有PathIsRelative函数的WinAPI Bug吗

Is it a WinAPI Bug with PathIsRelative function?

本文关键字:WinAPI Bug 函数 PathIsRelative      更新时间:2023-10-16

根据MSDN,C:tmp.txt的路径应该被视为相对路径,但PathIsRelative()返回FALSE而不是TRUE

这是个虫子吗?或者我哪里搞错了?

这取决于什么是相对的。像C:tmp.txt这样的路径非常特别。它相对于驱动器C上的当前目录。另一方面,tmp.txt相对于进程当前目录。它可能不在驱动器C上。事实上,每个驱动器的当前目录也很特别,通过一些奇怪的环境变量来实现,纯粹是为了保持与DOS的兼容性。关于这个相当神秘的主题,可以在Raymond Chen的文章中找到更多信息:为什么每个驱动器都有自己的当前目录?

对于什么是相对路径,PathIsRelative似乎与您有不同的看法。PathIsRelative函数不将相对于指定驱动器上工作目录的路径视为相对路径。因此CCD_ 9返回CCD_。如果你想要一个函数将这样的路径视为相对路径,你可能必须自己编写。手动解析路径以检测这种情况非常容易。