windows下调用系统API实现进程创建和文件读写

题目要求:有一个文本文件CommandList.txt,第一行是说明文字:本文件最后一次打开和运行日期是20150407。第二行开始每行是一个可执行程序的名称(含路径)。编写一个应用程序能打开该文件,并顺序执行其中的每个程序,并更新文件第一行中的日期。

#include 
#include 
#pragma warning(disable:4996)
int main()
{
    char timeContent[100] = {0};
    char readBuffer[1000] = {0};
    char command[10][100] = {0};       //按行分开的命令
    int commandNum = 0;		       //命令个数

    DWORD dwRead = 0;
    DWORD dwWrite = 0;
    HANDLE hFile = CreateFile("./CommandList.txt", GENERIC_WRITE | GENERIC_READ, 0,
	NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

    if (hFile == INVALID_HANDLE_VALUE)
    {
        printf("CreateFile failed!");
        CloseHandle(hFile);
        return -1;
    }

	//写入时间
	FILETIME createTime,lastAccessTime,lastWriteTime;
	GetFileTime(hFile,&createTime,&lastAccessTime,&lastWriteTime);
	SYSTEMTIME st;
	memset(&st,0x0,sizeof(st));
	FileTimeToSystemTime(&lastWriteTime,&st);//将文件时间格式转换为系统时间格式(UTC格式),可以看到小时数比真实的小了8
	TIME_ZONE_INFORMATION tz;
	GetTimeZoneInformation(&tz);//获取当地时区信息
	SYSTEMTIME localST;
	SystemTimeToTzSpecificLocalTime(&tz,&st,&localST);//将UTC时间格式转换为当地时间格式,因为中国是东8区,所以转换时在小时上加了8

	sprintf(timeContent,"本文件最后一次打开和运行日期是%4d%02d%02d\r\n",localST.wYear,localST.wMonth,localST.wDay);
	WriteFile(hFile, timeContent, strlen(timeContent), &dwWrite, NULL);
 
	//读取文本
        DWORD fileSize = GetFileSize(hFile, NULL);
        ReadFile(hFile, readBuffer, fileSize, &dwRead, NULL);
        readBuffer[fileSize] = '\0';
	printf("%s",readBuffer);
	CloseHandle(hFile);

	//循环将读取的命令分隔开来
	char tmpBuffer[1000] = {0};
	for(int i=0;i


CommandList.txt文本内容如下(可将对应的应用程序路径修改为自己的):

windows下调用系统API实现进程创建和文件读写_第1张图片

你可能感兴趣的:(操作系统)