J'essaie de lire le contenu du fichier, mais malgré qu'il est capable d'écrire dans le même fichier. Je ne peux pas lire à partir de ça! Le programme fonctionne en tant qu'administrateur.C++ CreateFile ne peut pas lire le fichier ERROR_ACCESS_DENIED
J'ai essayé de donner des droits "FILE_SHARE_WRITE | FILE_SHARE_READ", mais ne fonctionne toujours pas.
DWORD dwBytesWritten = 0;
unsigned long BytesRead = 0;
HANDLE hFile = INVALID_HANDLE_VALUE;
wchar_t text_file[MAX_PATH] = { 0 };
TCHAR *save_text(void) {
OPENFILENAME ofn = { 0 };
TCHAR filename[512] = _T("C://Windows/EXAMPLE.txt");
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = L"Txt files (*.txt)\0*.txt\0All Files\0*.*\0";
ofn.lpstrFile = filename;
ofn.nMaxFile = sizeof(filename);
ofn.Flags = OFN_NONETWORKBUTTON | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY;
ofn.nFilterIndex = 1;
return(filename);
}
void WriteToFile(TCHAR *wText)
{
wchar_t loginchar[1000];
hFile = CreateFile(text_file, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);
WriteFile(hFile, wText, wcslen(wText) * sizeof(wchar_t), &dwBytesWritten, NULL); // its writing without problem
ReadFile(hFile, loginchar, wcslen(loginchar) * sizeof(wchar_t), &BytesRead, NULL); // accses denied
ResultInFile(GetLastError()); // ResultInFile funcitons writes paramater to the file
//ResultInFile(BytesRead); // to see how many bytes read, but of course doesnt work..
CloseHandle(hFile);
}
// this is the how file created at main function :
hFile = CreateFile(txt_file, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);
Ceci est complètement faux, et cela n'a rien à voir avec les noms de fichiers ou les fichiers d'ouverture: 'TCHAR filename [512] = _T (" C: //Windows/EXAMPLE.txt "); // ... return (nom de fichier); '- Vous renvoyez un pointeur sur une variable locale (tableau). C'est ** comportement indéfini **. Lorsque la fonction retourne, ce tableau pointe vers la poubelle. – PaulMcKenzie