高手,有没办法?1.如何改变该 EXE 文件的创建时间?2.如果这个EXE是程序本身,那能不能实时改"创建时间"?谢.
解决方案 »
- delphi关闭并重新启动explorer.exe进程不影响打开的文件夹
- 我注入了另一个程序,请问怎么操作他的控件呢?
- 谁有delphi 7的参考手册啊。就像。NET的csdn一样,有全部类的说明那种。
- 有什么好办法让日期按照工作日相加吗?
- adoquery查询出来的结果乘以某个系数后显示在dbgrid中,如何实现?
- 有朋友知道判断光驱“打开”与“关闭”的API么?
- 请教:在SQL SERVER 如何动态生成表?
- 请问哪里有DEPHI的API函数的学习资料下载???
- fast report的问题??
- 保密性最高的数据库
- 如何在指定文件夹下创建快捷方式?(非桌面)
- 如何在delphi7中取得系统的时间?
我想时间应该改变了。
1)如lovendll所说,先改变系统的时钟,然后重新编译执行文件。
2)有一个工具软件:FileTimeEdit2,可以修改各种文件的创建时间,修改时间,存取时间。
找不到的话,可发email索取。
typedef struct {
short level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */
short bsize; /* Buffer size */
unsigned char *buffer; /* Data transfer buffer */
unsigned char *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */
Touch Version 4.2 Copyright (c) 1998 Borland InternationalUsage: TOUCH [options] [filename(s)...] (wild cards * and ? ok)
-c don't create file
-D allow directory names to be touched (when wildcards specified)
-h prints this help screen (-h2 for expanded help)
-rfilename set to same date/time as 'filename'
-s recurse through subdirectories
-thh:mm[:ss] set the file time
-dmm/dd/yy set the file date
自己写的话,CreateFile、SetFileTime。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;type
TForm1 = class(TForm)
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
// 转换文件的时间格式function CovFileDate(FileDate: _FileTime): TDateTime;
var
Tct: _SystemTime;
Temp: _FileTime;
begin
FileTimeToLocalFileTime(FileDate, Temp);
FileTimeToSystemTime(Temp, Tct);
CovFileDate := SystemTimeToDateTime(Tct);
end;// 获取文件时间,fn表示目标文件路径和名称,fType为取得日期的类型function GetFileTime(const fn: string; const fType: Byte): string;
const
Model = 'yyyy/mm/dd,hh:mm:ss'; { 设定时间格式 }
var
Tp: TSearchRec; { 声明Tp为一个查找记录 }
begin
FindFirst(fn, faAnyFile, Tp); { 查找目标文件 }
// 返回文件的创建时间
if fType = 1 then
Result := FormatDateTime(Model, CovFileDate(Tp.FindData.ftCreationTime));
// 返回文件的修改时间
if fType = 2 then
Result := FormatDateTime(Model, CovFileDate(Tp.FindData.ftLastWriteTime));
//返回文件的当前访问时间
if fType = 3 then
Result := FormatDateTime(Model, Now); FindClose(Tp);
end;procedure SetFileDateTime(const Tf: string);
{ 设置文件时间,Tf表示目标文件路径和名称 }
var
Dt1, Dt2: Integer;
Fs: TFileStream;
Fct, Flt: TFileTime;
begin
Dt1 := DateTimeToFileDate(
Trunc(Form1.DateTimePicker1.Date) + Frac(Form1.DateTimePicker2.Time));
Dt2 := DateTimeToFileDate(
Trunc(Form1.DateTimePicker3.Date) + Frac(Form1.DateTimePicker4.Time));
// 转换用户输入在DataTimePicker中的信息
try
FS := TFileStream.Create(Tf, fmOpenReadWrite);
try
if DosDateTimeToFileTime(LongRec(DT1).Hi, LongRec(DT1).Lo, Fct) and
LocalFileTimeToFileTime(Fct, Fct) and
DosDateTimeToFileTime(LongRec(DT2).Hi, LongRec(DT2).Lo, Flt) and
LocalFileTimeToFileTime(Flt, Flt)
then
// 设置文件时间属性
SetFileTime(FS.Handle, @Fct, @Flt, @Flt);
finally
begin
FS.Free;
ShowMessage('修改成功');
end;
end;
except
// 因为目标文件正在被使用等原因而导致失败
MessageDlg('日期修改操作失败!',
mtError, [mbOk], 0);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Clear;
Memo1.Lines.Add('文件创建日期:' + GetFileTime(OpenDialog1.FileName, 1));
Memo1.Lines.Add('文件修改日期:' + GetFileTime(OpenDialog1.FileName, 2));
Memo1.Lines.Add('文件访问日期:' + GetFileTime(OpenDialog1.FileName, 3));
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
OpenDialog1.Execute;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
SetFileDateTime(OpenDialog1.FileName);
end;end.