我正在尝试获取与 C 中的进程句柄关联的文件名,并且由于我的代码需要在 Windows XP 上运行,所以我使用的是 GetProcessImageFileName(而不是 QueryFullProcessImageName).
但是,GetProcessImageFileName 返回设备形式的路径,例如\device\harddiskvolume0\- 如何将其转换为驱动器盘符?
最佳答案
我打算建议 GetModuleFileNameEx
就像卢克在评论中所做的那样。
QueryDosDevice()
在所有驱动器盘符上(您可以找到带有 GetLogicalDrives()
的所有驱动器盘符)将是另一个赌注,尽管从理论上讲您可以获得没有驱动器盘符的路径,或者符号链接(symbolic link)可能会搞砸直接的字符串比较。
但是.. 这个怎么样...你应该能够在 NT 路径前加上 \??\GLOBALROOT
(这是来自内存,可能不完全是那样)然后使用它在类似 CreateFileW()
的函数中。 (据我所知,它必须是文件 API 的 Unicode 版本……)
关于将 Windows 设备文件名转换为驱动器号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021898/