杀进程和取文件最近使用时间
unit uFTPclient;
interface
uses
SysUtils,Windows,Tlhelp32;
const
FILE_CREATE_TIME=0; //文件建立时间
FILE_MODIFY_TIME=1; //修改时间
FILE_ACCESS_TIME=2; //最后访问时间
type
TFileTimes = (ftLastAccess, ftLastWrite, ftCreation);
//文件是否正被使用
function IsFileInUse(FName:string):Boolean;
//提升权限
//杀服务程序进程,它会提示"拒绝访问".其实只要程序拥有Debug权限即可
//使用的时候先EnableDebugPrivilege提升权限,然后KillTask(ExeFileName: string)
function EnableDebugPrivilege: Boolean;
//查找进程
function FindProcessId(ExeFileName: string):THandle;
//杀进程
function KillTask(ExeFileName: string): Integer;
//取文件最后使用时间
function GetFileLastAccessTime(sFileName:string;uFlag:byte):TDateTime;
//设置文件最后修改时间
Function SetFileLastWriteTime(FileName:string; DateTime: TDateTime): Integer;
implementation
Function SetFileLastWriteTime(FileName:string; DateTime: TDateTime): Integer;
var
hFile : THandle;
WriteTime, LocalTime : TFILETIME;
SystemTime : TSystemTime;
begin
result:= 0;
try
hFile := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);
if hFile <= 0 then
begin
result:= 1;
end else
begin
DateTimeToSystemTime(DateTime, SystemTime);
SystemTimeToFileTime(SystemTime, LocalTime);
LocalFileTimeToFileTime(Localtime, WriteTime);
If not SetFileTime(hFile, nil, nil, @WriteTime) then
begin
result:= 2;
end;
end;
finally
FileClose(hFile);
end;
end;
function IsFileInUse(FName:string):Boolean;
var
HFileRes:HFILE;
begin
Result:=False;
if not FileExists(FName) then
Exit;
HFileRes:=CreateFile(PChar(FName),GENERIC_READ or GENERIC_WRITE,0,
nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Result:=(HFileRes=INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes);
end;
function EnableDebugPrivilege: Boolean;
function EnablePrivilege(hToken: Cardinal; PrivName: string; bEnable: Boolean): Boolean;
var
TP: TOKEN_PRIVILEGES;
Dummy: Cardinal;
begin
TP.PrivilegeCount := 1;
LookupPrivilegeValue(nil, pchar(PrivName), TP.Privileges[0].Luid);
if bEnable then
TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else TP.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TP, SizeOf(TP), nil, Dummy);
Result := GetLastError = ERROR_SUCCESS;
end;
var
hToken: Cardinal;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
result:=EnablePrivilege(hToken, 'SeDebugPrivilege', True);
CloseHandle(hToken);
end;
function FindProcessId(ExeFileName: string):THandle;
var
ContinueLoop:BOOL;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
begin
result:=0;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
if UpperCase(FProcessEntry32.szExeFile)=UpperCase(ExeFileName) then
begin
result:=FProcessEntry32.th32ProcessID;
break;
end;
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle (FSnapshotHandle);
end;
function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: boolean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
function GetFileLastAccessTime(sFileName:string;uFlag:byte):TDateTime;
var
ffd:TWin32FindData;
dft:DWord;
lft:TFileTime;
h:THandle;
begin
h:=FindFirstFile(PChar(sFileName),ffd);
if h<>INVALID_HANDLE_VALUE then
begin
case uFlag of
FILE_CREATE_TIME:FileTimeToLocalFileTime(ffd.ftCreationTime,lft);
FILE_MODIFY_TIME:FileTimeToLocalFileTime(ffd.ftLastWriteTime,lft);
FILE_ACCESS_TIME:FileTimeToLocalFileTime(ffd.ftLastAccessTime,lft);
else
FileTimeToLocalFileTime(ffd.ftLastAccessTime,lft);
end;
FileTimeToDosDateTime(lft,LongRec(dft).Hi,LongRec(dft).Lo);
Result:=FileDateToDateTime(dft);
windows.FindClose(h);
end
else
result:=0;
end;
end.
转载于:https://www.cnblogs.com/hnxxcxg/archive/2008/11/12/2940978.html
杀进程和取文件最近使用时间相关推荐
- 如何看exe文件源代码_杀进程、删文件...看新型勒索软件RobbinHood如何干掉杀毒软件...
网络安全公司Sophos于近日发文称,该公司旗下研究安全团队日前发现了一种此前从未被公开披露过的勒索软件,并将其命名为"RobbinHood". 文章指出,这种新型勒索软件不仅能够 ...
- linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...
1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...
- Windows和服务器文件互传之scp命令,ssh通道连接服务器、linux获取管理员权限执行杀进程等常用linux命令
一.scp命令 前提条件:本地和服务端网络通信正常,可以通过ping命令校验查看 ping 10.29.133.111 场景:把当前Windows系统桌面的 123.txt 文件上传至 10.29.1 ...
- Windows远程时无法复制文件--杀进程rdpclip.exe,然后再启动
1.远程登陆到主机上 2.任务管理器杀进程rdpclip.exe 3.[开始],搜索rdpclip.exe,点击运行 此时重新复制文件,可以跨主机复制啦 原以为是公司网络限制,现在看来还是没那么先进嘛 ...
- linux如何查进程、杀进程,重启进程
linux如何查进程.杀进程,重启进程 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序. ps -A 显示所有程序. ps c 列出程序时,显 ...
- 【Android 应用开发】Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )
文章目录 一.Android 杀后台进程 二.Android 杀前台进程 三.Android 杀其它进程 一.Android 杀后台进程 使用 Android 的进程 api 类 android.os ...
- kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!
你要"跑路"了吗? 只要你用过 UNIX/LINUX ,我敢打赌你大概率执行过这样一条命令,也就是俗话说的"杀进程": kill -9 执行它,是不是如同执行以 ...
- 16进制 ksh_AIX系统中如何统计进程打开的文件数目
作者:李烨楠 中国建设银行 来自微信公众号:平台人生 环境: AIX 6.1 AIX7.1 前言: 用户有时需要统计一个进程打开的文件数目,比如,在当前打开文件句柄使用量是否超过用户资源限制(/etc ...
- python定时杀进程
python定时杀进程 之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WebDriverWait设置最长等待 ...
最新文章
- Python学习---Django路由系统【all】
- 【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )
- Git停止跟踪rm -r --cached与ignore区别
- 选了combobox里的选项后没激发change事件_备胎测试:来测测你被备胎了没?
- springBean的作用域
- 【转】opengl的一些小问题
- Java 日志管理最佳实践
- 6 个实用的 Code Review 实践技巧
- 如何预置apk(MTK6589)
- Windows NT 架构
- 小米路由R4A千兆版安装breed+OpenWRT教程以及救砖(全脚本无需硬改)
- LeetCode 227. 基本计算器 II 【c++/java详细题解】
- 生理学_神经系统的功能
- TIBCO Jaspersoft 使用教程+JasperReport 生成PDF记录
- 【ET500P】高清摄录,相位对焦
- O0 O1 O2 O3优化原理
- Redis从入门到精通
- Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql)
- SRGAN 论文学习
- 欧拉角和四元数相互转换