嘿,
我正在尝试获取与我的 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/