gpt4 book ai didi

c++ - 如果路径包含符号链接(symbolic link),Windows API 获取文件属性?

转载 作者:可可西里 更新时间:2023-11-01 09:59:02 24 4
gpt4 key购买 nike

我使用了 _stat64(const char *path, struct __stat64 *buffer); API 来获取文件/目录统计信息,但如果输入路径包含符号链接(symbolic link),则此 API 会失败。

如果文件路径包含符号链接(symbolic link),

GetFileAttributes()GetFileAttributesEx() API 也会失败。但正如 MSDN 中所述, 如果路径指向一个符号链接(symbolic link),这两个函数返回符号链接(symbolic link)的属性。如果路径指向符号链接(symbolic link),甚至 _stat64() 也能工作。

如果路径包含[not points to]一个符号链接(symbolic link),有没有办法获取文件/目录的状态/属性?

例如 - 如果输入路径为“D:\temp\symbolic_link\test”,如何获取“test”目录的属性

[编辑1]由于 eryksun 的评论是有道理的。我再次尝试了 GetFileAttributesEx() 和 _stat64() 。它起作用了,但这次我授予了对目标目录和符号链接(symbolic link)的完全权限。这似乎是许可问题。如果我通过“D:\temp\symbolic_link”,那么我会得到符号链接(symbolic link)的属性/统计信息,如果我通过“D:\temp\symbolic_link\test”,那么我获取预期的测试目录的属性/统计信息。

最佳答案

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(最大长度为 size)。

希望对您有所帮助。

关于c++ - 如果路径包含符号链接(symbolic link),Windows API 获取文件属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com