| 74 | } |
| 75 | |
| 76 | bool SetFileALLAccessPrems(const wchar_t* filePath) |
| 77 | { |
| 78 | BOOL bSuccess = TRUE; |
| 79 | EXPLICIT_ACCESS ea; |
| 80 | PACL pNewDacl = NULL; |
| 81 | PACL pOldDacl = NULL; |
| 82 | const wchar_t UserAccount[MAX_PATH] = L"Users"; |
| 83 | do |
| 84 | { |
| 85 | if (ERROR_SUCCESS != GetNamedSecurityInfo((LPTSTR)filePath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDacl, NULL, NULL)) |
| 86 | { |
| 87 | bSuccess = FALSE; |
| 88 | break; |
| 89 | |
| 90 | } |
| 91 | ::BuildExplicitAccessWithName(&ea, (LPTSTR)UserAccount, GENERIC_ALL, GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); |
| 92 | if (ERROR_SUCCESS != ::SetEntriesInAcl(1, &ea, pOldDacl, &pNewDacl)) |
| 93 | { |
| 94 | bSuccess = FALSE; |
| 95 | break; |
| 96 | } |
| 97 | |
| 98 | if (ERROR_SUCCESS != ::SetNamedSecurityInfo((LPTSTR)filePath, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL)) |
| 99 | { |
| 100 | bSuccess = FALSE; |
| 101 | } |
| 102 | } while (FALSE); |
| 103 | if (NULL != pNewDacl) |
| 104 | { |
| 105 | ::LocalFree(pNewDacl); |
| 106 | } |
| 107 | return bSuccess; |
| 108 | } |
| 109 | |
| 110 | HANDLE WINAPI Hk_CreateFileW( |
| 111 | _In_ LPCWSTR lpFileName, |