我嘗試使用_stat()獲取文件的權限。目前我想在Windows下運行它。方法如下:在我的代碼中,_stat()如何正確工作
bool CFile::Private::checkPermissions(std::string sFilename, CFile::EOpenmode iOpenmode)
{
std::string sErrMsg = "";
bool bResult = true;
struct _stat buf;
int iResult = 0;
// Get data associated with "crt_stat.c":
iResult = _stat(sFilename.c_str(), &buf);
// Check if statistics are valid:
if(iResult != 0)
{
switch (errno)
{
case ENOENT:
sErrMsg = "File: " + sFilename + " not found.";
break;
case EINVAL:
sErrMsg = "Invalid parameter to _stat(filename, &buf).";
break;
default:
/* Should never be reached. */
sErrMsg = "Unexpected error in _stat(filename, &buf).";
}
throw std::runtime_error(sErrMsg);
}
else
{
if((iOpenmode & CFile::Read) && (!(buf.st_mode & S_IREAD)))
{
bResult = false;
}
if((iOpenmode & CFile::Write) && (!(buf.st_mode & S_IWRITE)))
{
bResult = false;
}
}
return bResult;
}
獲得'false'權限的唯一方法是將文件的屬性設置爲'只讀'。取而代之的是,將checkPermissions(...)設置爲用戶的安全屬性(拒絕寫入和讀取)將爲'true'。如何檢查Windows的屬性和用戶權限?
入魔
如果文件已經打開,CreateFile忽略它的SECURITY_ATTRIBUTES arg,在這種情況下GetFileSecurity更好。 – 2016-10-25 00:14:12