c++ - 安全获取在 Windows API 中运行可执行文件的路径

标签 c++ windows

嘿, 我正在尝试获取与我的 exe 文件位于同一文件夹中的 dll 的路径。要走的路似乎是使用 QueryFullProcessImageName()GetModuleFileName() 之一来获取正在运行的可执行文件的路径,然后使用字符串操作使其成为改为所需库的路径。

不幸的是,这两个函数都没有提供提前找出所需缓冲区大小的方法。我试过为 nSize 参数传递零,但这没有达到预期的效果。

执行此操作的最佳实践方法是什么?

最佳答案

在实践中,您可以使用 Windows API MAX_PATH 作为您的缓冲区大小,也许加 1 以提高安全性。

理论上 Windows 路径可以大得多。我记得 MAX_PATH 大约是 270,而在 NTFS 文件系统中,路径最多可以(大约)32767 个字符。然而,对于这么大的尺寸,它必须作为 Unicode 处理,而且重要的是,Windows 资源管理器不支持这么大的路径,所以这在实践中不是问题。

在实践中,再次强调,如果你遇到这么大的路径,显然无法删除,那么你可以使用 Unicode 命名(长路径有一个特殊的前缀),和/或等效的短名称(DOS 8.3 名称), 和/或定义逻辑驱动器以缩短路径,以便可以删除目录/文件。

干杯,

关于c++ - 安全获取在 Windows API 中运行可执行文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4841546/

相关文章:

c++ - 在 OS X 10.7 而非 Linux 中使用 FBO 渲染到纹理时出现问题

windows - PhoneGap Build - Windows 键不在选择框中

windows - MouseLeave 事件不适用于按下左键单击

c++ - 如何在不同的目标平台上以编程方式巧妙地注册 32 位 COM/DLL 组件?

.net - Windows 事件 ID

C++ 编译器优化和短路评估

c++ - WinCE 6.0 操作系统启动后如何移动鼠标指针

c++ - _findnext (c++) 连续抛出访问冲突

使用 MinGW 的 C++ 多线程

python - 在 Windows 上安装 python mathutils 时出现问题