将 Windows 设备文件名转换为驱动器号

标签 c windows file winapi

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

相关文章:

c# - 如何跳过C#程序中的C++ dll错误

c# - 检测 Windows 10 系统电源状态

Java Servlet - 将数据写入文件

c++ - 在 C++ 中将字符与字符串的组成部分进行比较时出现错误

java - 如何分割多行并将它们添加到数组列表中

c - 如何仅将一项保存到 .txt 文件?功能

c - 关于 Makefile 中的 CFLAGS

c - 来自创建线程问题的 Enif_send 函数

c++ - OpenCV 和 MinGW 的运行时错误?

C++ - 对 Windows 命令使用 system()