[英]Windows API to fetch file attributes if path contains Symbolic link?
我用了_stat64(const char *path, struct __stat64 *buffer);
用于获取文件/目录统计信息的API,但是如果输入路径包含符号链接,则此API将失败。
如果文件路径包含符号链接,则GetFileAttributes()
和GetFileAttributesEx()
API也会失败。 但是,正如MSDN所提到的,如果路径指向符号链接,则这两个函数将返回符号链接的属性。 如果路径指向符号链接,即使_stat64()
可以工作。
如果路径包含[不指向]符号链接,是否有任何方法可以获取文件/目录的状态/属性?
例如-如果输入路径为“ D:\\ temp \\ symbolic_link \\ test”,如何获取“ test ”目录的属性
[Edit1]由于eryksun的评论很有意义。 我再次尝试了GetFileAttributesEx()和_stat64()。 它有效,但是这次我授予了对目标目录和符号链接的全部权限。 它似乎是权限问题。 如果我通过“ D:\\ temp \\ 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。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.