diff --git a/base/applications/notepad/dialog.c b/base/applications/notepad/dialog.c index 82c6c5c57bc..2aa747fa4de 100644 --- a/base/applications/notepad/dialog.c +++ b/base/applications/notepad/dialog.c @@ -249,8 +249,10 @@ static BOOL DoSaveFile(VOID) WaitCursor(TRUE); - hFile = CreateFileW(Globals.szFileName, GENERIC_WRITE, FILE_SHARE_WRITE, - NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + /* Use OPEN_ALWAYS instead of CREATE_ALWAYS in order to succeed + * even if the file has HIDDEN or SYSTEM attributes */ + hFile = CreateFileW(Globals.szFileName, GENERIC_WRITE, FILE_SHARE_READ, + NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { ShowLastError(); @@ -281,6 +283,8 @@ static BOOL DoSaveFile(VOID) } } + /* Truncate the file and close it */ + SetEndOfFile(hFile); CloseHandle(hFile); if (bRet)