void main () {
PSID UserSID = NULL;
PSID GroupSID = NULL;
//PSECURITY_DESCRIPTOR *SD = new PSECURITY_DESCRIPTOR;
PSECURITY_DESCRIPTOR SD = (PSECURITY_DESCRIPTOR)GlobalAlloc(GMEM_FIXED, sizeof(PSECURITY_DESCRIPTOR));
PACL pDACL ;
ULONG Count = NULL;
PEXPLICIT_ACCESS_W* pExplicitEntries = new PEXPLICIT_ACCESS_W;
string input, ext = "";
wcout << "Enter the location : " << endl;
std::getline(cin, input);
LPCSTR file = input.c_str();
HANDLE hFile = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
if (GetLastError() == ERROR_ACCESS_DENIED)
{
cout << "Access Denied : System Files" << endl;
return;
}
else if (GetLastError() == ERROR_PATH_NOT_FOUND)
{
cout << "Path Name Not Found" << endl;
return;
}
else if (GetLastError() == ERROR_FILE_NOT_FOUND)
{
cout << "File Not Found" << endl;
return;
}
else
{
cout << GetLastError() << endl;
return;
}
}
cout << GetLastError() << endl;
if ((GetSecurityInfo(hFile,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION, NULL, NULL, &pDACL, NULL, &SD)) == ERROR_SUCCESS)
{
cout << "Number of ACE : " << pDACL->AceCount << endl;
cout << GetLastError() << endl;
}
for (int i = 0; i < pDACL->AceCount; i++)
{
PACCESS_ALLOWED_ACE AceItem;
ACE_HEADER* AceHdr = NULL;
if (GetAce(pDACL, i, (LPVOID*)&AceItem) && GetAce(pDACL, i, (LPVOID*)&AceHdr))
{
TCHAR AccountBuff[80];
TCHAR DomainBuff[80];
DWORD AccountBufflength = 40;
DWORD DomainBufflength = 40;
PSID_NAME_USE peUse = new SID_NAME_USE;
PSID Sid = &AceItem->SidStart;
LookupAccountSidW(NULL, Sid, AccountBuff, &AccountBufflength, DomainBuff, &DomainBufflength,peUse);
wcout << "\n----- " << AccountBuff << " @ " << DomainBuff << " -----\n" << endl;
wcout << "AceType : " << AceHdr->AceType << " " << "Ace Flag : " << AceHdr->AceFlags << "\n" << endl;
DisplayAccessMask(AceItem->Mask);
}
else
{
cout << GetLastError() << endl;
}
}
} `
Как получить правильное количество ACE на вкладке безопасности свойства файла? На вкладке «Безопасность» свойства файла есть только 9 элементов, но список контроля доступа состоит из 13 элементов ACE. Может кто-нибудь сказать мне, как я могу получить пользователей, перечисленных на вкладке безопасности ->
Advanced и их разрешение файла ...