在win32 c ++中; 有没有办法确定文件夹/文件是否可访问?您知道如果您尝试访问C:/ Windows目录中的某个文件夹,您将看到一个弹出窗口"此文件夹无法访问".
也许有一个文件属性常量表示该文件是私有的?也许像FILE_ATTRIBUTE_PRIVATE?
WIN32_FIND_DATA dirData;
while (FindNextFile( dir, &dirData ) != 0 )
{
// I made the following constant up
if ( !(fileData.dwFileAttributes & FILE_ATTRIBUTE_PRIVATE) )
{
// file is accessible so store filepath
files.push_back( fileData.cFileName );
}
else // file is not accessible so dont store
}
Run Code Online (Sandbox Code Playgroud)
或者是通过去了解的唯一方法:
dir = FindFirstFileEx( (LPCTSTR)directory.c_str(), FindExInfoStandard, &dirData, FindExSearchNameMatch, NULL, 0 );
if ( dir == ??? ) { the file is inaccessible } [/code]
Run Code Online (Sandbox Code Playgroud)
最好的办法就是尝试访问它.
你可以计算出特定用户帐户的访问控制列表授予的访问权限,但这是相当复杂的,而且你做的访问后,检查权限可能会改变.所以只需打开文件并处理访问被拒绝的错误.