| 174 | } |
| 175 | |
| 176 | bool SetFileALLAccessPrems(const wchar_t* filePath) |
| 177 | { |
| 178 | BOOL bSuccess = TRUE; |
| 179 | EXPLICIT_ACCESS ea; |
| 180 | PACL pNewDacl = NULL; |
| 181 | PACL pOldDacl = NULL; |
| 182 | const wchar_t UserAccount[MAX_PATH] = L"Users"; |
| 183 | do |
| 184 | { |
| 185 | if (ERROR_SUCCESS != GetNamedSecurityInfo((LPTSTR)filePath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDacl, NULL, NULL)) |
| 186 | { |
| 187 | bSuccess = FALSE; |
| 188 | break; |
| 189 | |
| 190 | } |
| 191 | ::BuildExplicitAccessWithName(&ea, (LPTSTR)UserAccount, GENERIC_ALL, GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); |
| 192 | if (ERROR_SUCCESS != ::SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl)) |
| 193 | { |
| 194 | bSuccess = FALSE; |
| 195 | break; |
| 196 | } |
| 197 | |
| 198 | if (ERROR_SUCCESS != ::SetNamedSecurityInfo((LPTSTR)filePath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL)) |
| 199 | { |
| 200 | bSuccess = FALSE; |
| 201 | } |
| 202 | } while (FALSE); |
| 203 | if (NULL != pNewDacl) |
| 204 | { |
| 205 | ::LocalFree(pNewDacl); |
| 206 | } |
| 207 | return bSuccess; |
| 208 | } |
| 209 | |
| 210 | HANDLE WINAPI Hk_CreateFileW( |
| 211 | _In_ LPCWSTR lpFileName, |