如何获得重定向路径的实际路径

How to get Actual path of redirected path?

本文关键字:路径 重定向 何获得      更新时间:2023-10-16

在64位上运行的32位进程将获得广义路径到重定向的路径,由于文件重定向。例如,如果进程从WindowsSysWOW64运行,则调用GetCurrentDirectory将得到结果:WindowsSystem32

虽然,很有可能确定32位进程是否在64位主机上运行。我正在寻找一个解决方案,给我正确的/实际的路径。比如ResolveWOWPathToActual path,它会为路径WindowsSystem32提供WindowsSysWOW64

编辑:

WCHAR szCurFolder[MAX_PATH];
PVOID dummy;
Wow64DisableWow64FsRedirection(&dummy);
GetCurrentDirectoryW(MAX_PATH, szCurFolder);
printf("Current Dir: %Sn", szCurFolder);

API函数GetFinalPathNameByHandle可能满足您的需求。您必须打开文件或目录才能获得它的句柄。将该句柄传递给GetFinalPathNameByHandle,它将为您提供文件的真实路径。不需要禁用文件系统重定向。

我想唯一可能的缺点是这确实需要您提供句柄而不是路径。