,可以使用GetFinalPathNameByHandle函数。

示例代码:

#include <windows.h>
#include <iostream>
using namespace std;

int main() {
    HANDLE hFile = CreateFile(TEXT("test.txt"), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE) {
        cout << "Failed to create file!" << endl;
        return 1;
    }

    WCHAR path[MAX_PATH];
    DWORD dwSize = GetFinalPathNameByHandle(hFile, path, MAX_PATH, FILE_NAME_NORMALIZED);
    if (dwSize == 0) {
        cout << "Failed to get file path!" << endl;
        CloseHandle(hFile);
        return 1;
    }

    wcout << "File path: " << path << endl;

    CloseHandle(hFile);
    return 0;
}

输出结果:

File path: \\?\C:\Users\...\test.txt
在进程空间内获取了NtWriteFile的第一个参数文件句柄如果通过这个句柄获取文件名称

原文地址: https://www.cveoy.top/t/topic/bbL2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录