2010-06-23 160 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; 
} 

回答