You need to enable JavaScript to run this app. Windows下GetFileAttributesA相对路径查找目录及32/64位架构差异问询
优惠活动
大模型
产品
解决方案
定价
更多

Windows下GetFileAttributesA相对路径查找目录及32/64位架构差异问询

问题结论
  • 调用GetFileAttributesA("someFile.ext")时,会在目录A中查找文件
  • 该行为在Visual Studio 32位/64位架构编译下不存在任何差异
详细说明

路径查找规则

Windows平台所有接受相对路径的原生文件API(包括GetFileAttributesA系列函数),相对路径的基准都是进程的当前工作目录(Current Working Directory, CWD)。
进程的当前工作目录默认继承自启动它的父进程:你在处于目录A的终端中启动tmp.exe时,tmp.exe进程的工作目录就被初始化为目录A,因此仅传文件名的相对路径会直接在目录A下检索目标文件,和tmp.exe自身存放的目录B没有关联。

补充常见误区:如果需要基于程序自身所在目录查找文件,需要先通过GetModuleFileNameA(NULL, ...)获取exe自身的完整路径,剥离执行文件名得到目录B的路径后,再和目标文件名拼接为完整路径传入API,才能实现从目录B查找的效果。

架构差异说明

该路径解析逻辑属于Windows内核层面的通用文件操作规则,和程序编译的目标架构完全无关。只要代码中没有主动调用SetCurrentDirectory修改进程的当前工作目录,无论是32位还是64位编译生成的程序,行为完全一致。

内容的提问来源于stack exchange,提问作者arielBodyLotion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 20:39:00