论安全萌新的自我修养

   :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
CreateFile:获得一个已存在文件句柄或者新建文件句柄

HANDLE CreateFileW(
  LPCWSTR               lpFileName,//文件路径
  DWORD                 dwDesiredAccess,//文件的访问控制,读GENERIC_READ、写GENERIC_WRITE,读写(GENERIC_READ | GENERIC_WRITE)
  DWORD                 dwShareMode,//零表示不共享,FILE_SHARE_READ、/、FILE_SHARE_WRITE对文件进行共享访问
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,//安全描述符
  DWORD                 dwCreationDisposition,//文件不存在或存在时的操作
  DWORD                 dwFlagsAndAttributes,//设置文件标志位
  HANDLE                hTemplateFile//大多数情况为NULL
);

dwCreationDisposition:指定当文件存在或不存在时的操作。常见的操作有5种:
CREATE_NEW:创建文件,如果文件存在会出错;
CREATE_ALWAYS:创建文件,会修改前一个文件;
OPEN_EXISTING:文件已经存在;
OPEN_ALWAYS:如果不存在就创建;
TRUNCATE_EXISTING:将现有的文件缩短为零长度;
dwFlagAndAttributes:表示新创建文件的属性。文件的常见属性有5种:
FILE_ATTRIBUTE_ARCHIVE:标记为归档属性;
FILE_ATTRIBUTE_NORMAL:默认属性;
FILE_ATTRIBUTE_HIDDEN:隐藏文件或目录;
FILE_ATTRIBUTE_READONLY:文件为只读;
FILE_ATTRIBUTE_SYSTEM:文件为系统文件;


WriteFile:写文件

BOOL WriteFile(
  HANDLE       hFile,//文件句柄
  LPCVOID      lpBuffer,//要写入的数据缓存区
  DWORD        nNumberOfBytesToWrite,//要写入的字节数
  LPDWORD      lpNumberOfBytesWritten,//设置一个遍历,用来接收写入的内容
  LPOVERLAPPED lpOverlapped//大多数情况为NULL
);

ReadFile:读文件 与写文件类似

BOOL ReadFile(
  HANDLE       hFile,
  LPVOID       lpBuffer,
  DWORD        nNumberOfBytesToRead,
  LPDWORD      lpNumberOfBytesRead,
  LPOVERLAPPED lpOverlapped
);



#include<windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	//文件句柄
	HANDLE hFile; //用来接收CreateFile返回来的句柄,用这个句柄来进行写入的操作
	DWORD  dwWritten;
	TCHAR  szSystemDir[MAX_PATH]; //字符数组,用于存储系统目录

	GetSystemDirectory(szSystemDir, MAX_PATH);//获取系统目录
	hFile = CreateFile("test.txt",
		GENERIC_WRITE,
		0,
		NULL,
		CREATE_ALWAYS,
		FILE_ATTRIBUTE_NORMAL,
		NULL);//创建文件txt

	if (hFile != INVALID_HANDLE_VALUE)
	{
		if (!WriteFile(hFile, szSystemDir, lstrlen(szSystemDir), &dwWritten, NULL))//将系统目录,系统信息写入文件中
		{
			return GetLastError(); //写入失败 返回错误信息
		}
	}
	CloseHandle(hFile);//关闭文件
	return 0;
}
posted on 2021-02-09 14:19  Yangsir34  阅读(178)  评论(0编辑  收藏  举报