使用Windows API来判断
/*
* @brief 是否有文件的读写权限
*/
bool CanReadWriteFile(const CString& strPathFile )
{
HANDLE hOpenFile = ::CreateFile(strPathFile,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == hOpenFile)
{
return false;
}
::CloseHandle(hOpenFile);
hOpenFile = NULL;
return true;
}
/*
* @brief 是否有文件夹的读写权限
*/
bool CanReadWriteFolder(const CString& strFolder)
{
HANDLE hOpenDir = ::CreateFile(strFolder,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (INVALID_HANDLE_VALUE == hOpenDir)
{
return false;
}
::CloseHandle(hOpenDir);
hOpenDir = NULL;
return true;
}