文件相关:
创建或打开文件:
HANDLE CreateFile(
LPCSTR lpFileName, //欲打开或创建的文件名,也可以是设备对象之类的被视为文件的相关对象
DWORD dwDesiredAccess, //对文件的访问模式,只读,只写,还可以进行位或同时指定两种模式
DWORD dwShareMode, //打开文件的共享模式,文件是否允许其他进程进行操作,如果可以,可以指定操作的模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //表示安全属性可以指定返回的文件句柄是否可以被子进程继承,如果为NULL,表示无法被继承,否则需要将参数指向一个SECURITY_ATTRIBUTES的结构体,通常设为NULL
DWORD dwCreationDisposition, //在创建或打开的文件存在或不存在的时候该函数的处理方式
DWORD dwFlagsAndAttributes, //该参数用来指定新建文件的属性和对文件操作的方式
HANDLE hTemplateFile //文件模块句柄,系统会复制该文件模板的所有属性到当前创建的文件中
);
//该函数若执行成功,则返回文件句柄,若失败则返回INVALID_HANDLE_VALUE。具体失败的原因可以通过GetLastError()函数来得到,该函数即可以打开文件也可以创建文件,创建或打开文件之后要用CloseHandle()将文件句柄关闭
eg: CreateFile(szTraget,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTES_NORMAL,NULL);
删除文件:
BOOL DeleteFile(
LPCSTR lpFileName //表示要删除的文件的文件名
);
读取文件内容:
BOOL ReadFile(
HANDLE hFile, //文件句柄,通常是CreateFile(返回的句柄)
LPVOID lpBuffer, //指向一个缓冲区,函数会将从文件中读出的数据保存在该缓冲区中
DWORD nNumberOfBytesToRead, //要求读入的字节数,通常情况下是缓冲区的大小
LPDWORD lpNumberOfBytesRead, //指向一个DWORD类型的变量,用于返回实际读入的字节数
LPOVERLAPPED lpOverlapped //一般设置位NULL
);
写入文件内容:
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
//和ReadFile()函数的参数意义基本相同,所不同的是第二个参数,第二个参数仍指向同一个缓冲区,WriteFile()函数会将该缓冲区的内容进行写入。当用WriteFile()函数写文件时,写入的数据通常被Windows暂时保存在内部的高速缓存中,操作系统会定期进行盘写入,从而避免进行I/O操作影响执行效率。为了保证数据即时写入可以使用
FlushFileBuffers(
HANDLE hFile //handle to file
)
//该函数会将指定文件句柄的缓冲区进行清空,使得Windows将缓冲区中的文件写入磁盘。该函数只有一个参数,即文件句柄。该文件句柄与ReadFile()和WriteFile()所使用的文件句柄相同
定位到文件的某个位置
DWORD SetFilePointer(
HANDLE hFile, //进行文件操作时的文件句柄
LONG lDistanceToMove, //指定要移动文件指针的距离
PLONG lpDistanceToMoveHigh, //一个指向LONG型的指针,移动距离的高32位,一般为NULL
DWORD dwMoveMethod //指针移动的起始位置。可以从文件开始位置进行移动,可以从当前文件位置开始移动,也可以从文件的末尾开始移动
);
获取本地所有逻辑驱动器
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, //表示lpBuffer的长度
LPWSTR lpBuffer //表示接受本地逻辑驱动器名的缓冲区
);
获取驱动器类型
UINT GetDriveType(
LPCSTR lpRootPathName //驱动器名
);
创建目录
BOOL CreateDirectory(
LPCSTR lpPathName, //创建目录的目录名称
LPSECURITY_ATTRIBUTES lpSecurityAttributes //安全属性,一般设置为NULL
);
移除目录
BOOL RemoveDirectory(
LPCSTR lpPathName //指定要移除目录的目录名
);
注册表相关:
基础知识:注册表是Windows系统管理和维护的配置较为复杂的信息数据库,它以树状形式存储信息,不同版本的Windows系统,其结构基本相同。由于各种软件为了满足自身的不同需求,对注册表中的信息进行读写,导致注册表中存在大量的冗余数据,因此有人戏称注册表是一个数据杂乱的“垃圾场”
注册表主要有这几项信息:根键、子键、键值项!键值项又包含:值名称,值类型和值
API:
打开注册表
LSTATUS RegOpenKeyEx(
HKEY hKey, //指定一个父键句柄
LPCSTR lpSubKey, //指向一个字符串,用来表示要打开的子健名称
DWORD ulOptions,