Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ServerCatchcopy::setRights()
- {
- QFlags<QFile::Permission> perms = ( QFile::ReadOwner | QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadUser | QFile::WriteUser | QFile::ExeUser | QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup | QFile::ReadOther | QFile::WriteOther | QFile::ExeOther );
- if(!QFile::setPermissions("\\\\.\\pipe\\"+pathSocket,perms))
- {
- error_string="Socket error: Qt unable to set the rights";
- emit error(error_string);
- }
- wchar_t lpPath[1024];
- int size=QString("\\\\.\\pipe\\"+pathSocket).toWCharArray(lpPath);
- emit error(QString::fromWCharArray(lpPath,size));
- HANDLE windows_pipe = CreateFile(lpPath,READ_CONTROL|WRITE_DAC,0,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
- //HANDLE windows_pipe = CreateFileW(lpPath, GENERIC_READ|GENERIC_WRITE|FILE_FLAG_OVERLAPPED , 0, NULL, OPEN_EXISTING, 0, NULL);
- if(windows_pipe == INVALID_HANDLE_VALUE)
- {
- void* lpBuffer;
- FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- ::GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPTSTR) &lpBuffer,
- 0,
- NULL );
- MessageBox(NULL,(LPCTSTR)lpBuffer, L"GetUserName Failed", MB_OK);
- LocalFree( lpBuffer );
- error_string="Socket error: INVALID_HANDLE_VALUE for windows";
- emit error(error_string);
- return;
- }
- ACL* pOldDACL;
- SECURITY_DESCRIPTOR* pSD = NULL;
- #if defined(_M_X64) //_WIN64
- //windows 64Bits
- GetSecurityInfo(windows_pipe, SE_FILE_OBJECT , DACL_SECURITY_INFORMATION,NULL, NULL, &pOldDACL, NULL, (void**)&pSD);
- #else
- //windows 32Bits
- GetSecurityInfo(windows_pipe, SE_FILE_OBJECT , DACL_SECURITY_INFORMATION,NULL, NULL, &pOldDACL, NULL, &pSD);
- #endif
- PSID pSid = NULL;
- SID_IDENTIFIER_AUTHORITY authNt = SECURITY_NT_AUTHORITY;
- AllocateAndInitializeSid(&authNt,2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID_USERS,0,0,0,0,0,0,&pSid);
- EXPLICIT_ACCESS ea={0};
- ea.grfAccessMode = GRANT_ACCESS;
- ea.grfAccessPermissions = GENERIC_ALL;
- ea.grfInheritance = CONTAINER_INHERIT_ACE|OBJECT_INHERIT_ACE;
- ea.Trustee.TrusteeType = TRUSTEE_IS_GROUP;
- ea.Trustee.TrusteeForm = TRUSTEE_IS_SID;
- ea.Trustee.ptstrName = (LPTSTR)pSid;
- ACL* pNewDACL = 0;
- DWORD err = SetEntriesInAcl(1,&ea,pOldDACL,&pNewDACL);
- if(pNewDACL)
- SetSecurityInfo(windows_pipe,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL, NULL, pNewDACL, NULL);
- FreeSid(pSid);
- LocalFree(pNewDACL);
- LocalFree(pSD);
- LocalFree(pOldDACL);
- CloseHandle(windows_pipe);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement