gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:26:20 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com