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