怎么用CreateFile以写的方式打开一个只读文件
如何用CreateFile以写的方式打开一个只读文件? - C++ Builder / Windows SDK/API
我要对一个文件进行写操作,但发现那个文件是只读属性,于是乎CreateFile就失败了。
我想问如何用CreateFile以写的方式打开一个只读文件?
CreateFile中有参数可以指定这种操作码?
还是要先用其他函数改变文件属性,再对文件进行写操作,然后再还原文件属性?那是用些什么函数呢?
------解决方案--------------------
我要对一个文件进行写操作,但发现那个文件是只读属性,于是乎CreateFile就失败了。
我想问如何用CreateFile以写的方式打开一个只读文件?
CreateFile中有参数可以指定这种操作码?
还是要先用其他函数改变文件属性,再对文件进行写操作,然后再还原文件属性?那是用些什么函数呢?
------解决方案--------------------
- C/C++ code
char szFileName[] = "C:\\ccrun\\123.dat"; HANDLE hFile = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { DWORD dwLastError = GetLastError(); if (dwLastError == 5) { DWORD dwAttr = GetFileAttributes(szFileName); dwAttr &= ~FILE_ATTRIBUTE_READONLY; dwAttr &= ~FILE_ATTRIBUTE_SYSTEM; SetFileAttributes(szFileName, dwAttr); } hFile = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); } if (hFile != INVALID_HANDLE_VALUE) { // 进行读写操作 .... // ::CloseHandle(hFile); ShowMessage("ok"); }
------解决方案--------------------