如何检查文件夹或文件是否隐藏=

时间:2010-06-23 08:43:48

标签: c++ windows api file hide

我想知道文件或目录是否隐藏。

起初我使用了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;
}

1 个答案:

答案 0 :(得分:3)

使用GetFileAttributes功能。