2
回答
如何修改文件时间,请帮忙看看
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

提问之前,我有去搜过代码。

我自己写的如下:

#include "stdafx.h"
#include <windows.h> 
#include <string> 
#include <ctime> 
/*
int settime(LPSTR file)
{

	//LPSTR file = "xm.aspx";
	FILETIME Filetime;
	SYSTEMTIME systemtime;
	systemtime.wDay = 1;
	systemtime.wYear = 2000;
	systemtime.wMonth = 1;
	systemtime.wDayOfWeek = 1;
	systemtime.wSecond = 1;
	systemtime.wMilliseconds = 1;
	systemtime.wHour = 1;
	systemtime.wMinute = 1;

	SystemTimeToFileTime(&systemtime,&Filetime);

	//hfile = CreateFileA("1.txt",GENERIC_WRITE,0 , NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

	//if (hfile != INVALID_HANDLE_VALUE)
	//{
		SetFileTime(file,&Filetime,&Filetime,&Filetime);
//	}
	//CloseHandle(hfile);
	
	return 0;
}

int main(int argc,char* argv[])
{
	settime(argv[1]);
	return 0;
}



想修改一个EXE的程序时间(也包括所有文件类型),也不知道对不对。

运行完程序以后,目标文件时间并没有改变。

还请各位前辈们指出是那儿的错误。

直接这样设置时间是不可以的吗?

<无标签>
举报
共有2个答案 最后回答: 3年前

今天又看了下,此处错误原因是SetFileTime首个参数使用错误,句柄(hFile),不是文件名(fname)。稍微改了下,你看看。

#include "stdafx.h"
#include <windows.h> 
#include <string> 
#include <ctime> 

int settime(LPCSTR filename)
{
    SYSTEMTIME  systime;
    FILETIME ft, ftUTC;
	HANDLE hFile;

    systime.wYear = 2000;
    systime.wMonth = 1;
    systime.wDay = 1;
    systime.wDayOfWeek = 1;
    systime.wSecond = 1;
    systime.wHour = 1;
    systime.wMinute = 1;
    systime.wMilliseconds = 1;
	
    SystemTimeToFileTime(&systime,&ft);
	LocalFileTimeToFileTime(&ft, &ftUTC);
	hFile =  CreateFileA(filename,GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE ,
		NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hFile != INVALID_HANDLE_VALUE)
    {
        SetFileTime(hFile,(LPFILETIME) NULL, (LPFILETIME) NULL,&ftUTC);
	}
    CloseHandle(hFile);

	return 0;
}
 
int main(int argc,char* argv[])
{
    settime("gogooggoo.txt");
    return 0;
}




--- 共有 1 条评论 ---
保证不打死你谢谢,我去试试来。 3年前 回复
顶部