diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c index 18ed188..f69b778 100644 --- a/dlls/kernel32/file.c +++ b/dlls/kernel32/file.c @@ -1486,7 +1486,7 @@ BOOL WINAPI DeleteFileW( LPCWSTR path ) attr.SecurityDescriptor = NULL; attr.SecurityQualityOfService = NULL; - status = NtCreateFile(&hFile, GENERIC_READ | GENERIC_WRITE | DELETE, + status = NtCreateFile(&hFile, DELETE, &attr, &io, NULL, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0); diff --git a/server/fd.c b/server/fd.c index f3e42bd..ee99e8f 100644 --- a/server/fd.c +++ b/server/fd.c @@ -1776,7 +1776,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, flags &= ~(O_CREAT | O_EXCL | O_TRUNC); } - if ((access & FILE_UNIX_WRITE_ACCESS) && !(options & FILE_DIRECTORY_FILE)) + if (((access & FILE_UNIX_WRITE_ACCESS) || (access & DELETE)) && !(options & FILE_DIRECTORY_FILE)) { if (access & FILE_UNIX_READ_ACCESS) rw_mode = O_RDWR; else rw_mode = O_WRONLY;