2010-06-23 150 views
0

我想知道文件或目录是否隐藏。如何检查文件夹或文件是否隐藏=

起初我使用了CFile :: GetStatus(),但是我发现这个API有时会返回FALSE。

我不知道为什么,所以我写了下面的代码,但是我发现它并不稳定。我的代码有什么问题?

BOOL IsHide(const CString& strPath, BOOL& bIsHide) 
    { 
    if (strPath.GetLength() <= 3) 
    { 
    bIsHide = FALSE; 
    return TRUE; 
    } 
    bIsHide = FALSE; 
    HANDLE hFile = CreateFile(strPath, 0, FILE_SHARE_READ, 
    NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 
    NULL); 
    if (hFile == INVALID_HANDLE_VALUE) 
    { 
    ASSERT(FALSE); 
    return FALSE; 
    } 
    BY_HANDLE_FILE_INFORMATION fiBuf; 
    GetFileInformationByHandle(hFile, &fiBuf); 
    CloseHandle(hFile); 
    WORD isHide = (fiBuf.dwFileAttributes) | FILE_ATTRIBUTE_HIDDEN; 
    if (isHide == fiBuf.dwFileAttributes) 
    { 
    bIsHide = TRUE; 
    } 
    else 
    { 
    bIsHide = FALSE; 
    } 
    return TRUE; 
} 

回答