我使用_stat64(const char *path, struct __stat64 *buffer);
API来获取文件/目录统计信息,但如果输入路径包含符号链接,则此API将失败。
GetFileAttributes()
和GetFileAttributesEx()
API也会失败。但正如MSDN所述,如果路径指向符号链接,则这两个函数返回符号链接的属性。如果路径指向符号链接,则偶数_stat64()
也可以。
如果路径包含 [not points to] 符号链接,有没有办法获取文件/目录的状态/属性?
例如 - 如果输入路径为“D:\ temp \ symbolic_link \ test”,如何获取“ test ”目录的属性
[EDIT1] 因为eryksun的评论是有道理的。我再次尝试了GetFileAttributesEx()和_stat64()。它工作,但这次我已授予目标目录和符号链接的完全权限。它似乎是许可问题。如果我传递“D:\ temp \ symbolic_link ”,那么我会获得符号链接的属性/统计信息,如果我传递“D:\ temp \ symbolic_link \ test”那么我获取预期的测试目录的属性/统计信息。
答案 0 :(得分:4)
没有任何MSDN网页说出与您的问题有关的任何内容,但您可能希望通过执行以下操作获取文件的真实路径:
void realpath(const char *filename, wchar_t *pathbuf, int size)
{
OFSTRUCT of;
HANDLE file = (HANDLE)OpenFile(filename,&of,OF_READ);
GetFinalPathNameByHandle(file,pathbuf,size,FILE_NAME_OPENED);
CloseHandle(file);
}
这将使用文件的重新分析的路径名填充pathbuf(最大为大小)。
我希望这会有所帮助。