我试图获取与C中的进程句柄关联的文件名,并且由于我的代码需要在Windows XP上运行,所以我使用的是 GetProcessImageFileName (而不是 QueryFullProcessImageName )。

但是, GetProcessImageFileName 以设备形式返回路径,例如\device\harddiskvolume0\-如何将其转换为驱动器号?

最佳答案

我打算像陆克文(Luke)在评论中建议 GetModuleFileNameEx

所有驱动器号上的 QueryDosDevice() (您可以使用 GetLogicalDrives() 找到所有驱动器号)将是另一个选择,尽管理论上您可能会获得没有驱动器号的路径,或者符号链接(symbolic link)可能会破坏直接字符串比较。

但是..怎么样...您应该能够在NT路径前添加\??\GLOBALROOT前缀(这是从内存中提取的,可能不完全是这样),然后在CreateFileW()这样的函数中使用它。 (AFAIK必须是文件API的Unicode版本。)

09-15 22:07