function CovFileDate(Fd: _FileTime): TDateTime;
var
Tct:_SystemTime;
Temp:_FileTime;
begin
FileTimeToLocalFileTime(Fd,Temp);
FileTimeToSystemTime(Temp,Tct);
Result:=SystemTimeToDateTime(Tct);
end;取文件修改时间:
function GetFileModifyDate(fdt: TFileDateType;
fileName: string): TDateTime;
var
Tp:TSearchRec; { 申明Tp为一个查找记录 }
begin
FindFirst(fileName,faAnyFile,Tp); { 查找目标文件 }
Result:= CovFileDate(Tp.FindData.ftLastWriteTime);
FindClose(Tp);
end;单机程序调用没有任何问题,能够正确取到文件的修改时间,
可在windws服务程序中调用返回的却是"1860-01-01"的时间.
百思不得其解 请各位大侠帮忙分析一下。
var
Tct:_SystemTime;
Temp:_FileTime;
begin
FileTimeToLocalFileTime(Fd,Temp);
FileTimeToSystemTime(Temp,Tct);
Result:=SystemTimeToDateTime(Tct);
end;取文件修改时间:
function GetFileModifyDate(fdt: TFileDateType;
fileName: string): TDateTime;
var
Tp:TSearchRec; { 申明Tp为一个查找记录 }
begin
FindFirst(fileName,faAnyFile,Tp); { 查找目标文件 }
Result:= CovFileDate(Tp.FindData.ftLastWriteTime);
FindClose(Tp);
end;单机程序调用没有任何问题,能够正确取到文件的修改时间,
可在windws服务程序中调用返回的却是"1860-01-01"的时间.
百思不得其解 请各位大侠帮忙分析一下。
格式化成字符串后show出来也是这样不对的。
SR: TSearchRec;
FT: tdatetime;
tmp: _filetime;
tmpsys: _systemtime;
begin
// ....
FileTimeToLocalFileTime(SR.FindData.ftLastWriteTime,tmp);
FileTimeToSystemTime(tmp,tmpsys);
FT:= SystemTimeToDateTime(tmpsys);
memo1.Lines.Append(formatdatetime('YYYY-MM-DD HH:MM:SS',FT));
end;
都一样的 服务器时间也正确。。
而且在服务器上运行单机程序能正确获取
做成windwos服务就不行了
约定一定时间隔(几秒),然后SVC读取文本再处理..
网上找了下,要访问网络资源用以下几种方法:
1.给服务指定适合的账户运行
2.映射盘WinAPI:WNetAddConnection2
3.模拟用户WinAPI:LogonUser
第一种方法试了可行,不过我希望在本地系统帐户下运行,这样才可以与桌面进行交互。换其他的用户好像不行了。
第二种方法测试了下,在本地系统帐户下映射失败,getlasterror是1312。其他帐户下映射没问题,访问也不问题
第三种方法,没测试成功,用法不是很清楚各位大神请指点下。