文件禁止删除

ContractedBlock.gifExpandedBlockStart.gifCode
program createfile;  
uses  
  Windows, SysUtils;  
//提权函数  
procedure SetPrivilege;  
var  
  TPPrev, TP: TTokenPrivileges;  
  TokenHandle: THandle;  
  dwRetLen: DWORD;  
  lpLuid: TLargeInteger;  
begin  
  OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS, TokenHandle);  
  
if (LookupPrivilegeValue(nil, ’SeDebugPrivilege’, lpLuid)) then  
  
begin  
    TP.PrivilegeCount :
= 1;  
    TP.Privileges[
0].Attributes := SE_PRIVILEGE_ENABLED;  
    TP.Privileges[
0].Luid := lpLuid;  
    AdjustTokenPrivileges(TokenHandle, False, TP, SizeOf(TPPrev), TPPrev, dwRetLen);  
  
end;  
  CloseHandle(TokenHandle);  
end;  
procedure OccupyFile(lpFileName: string);  
var  
  hProcess, hFile, hTargetHandle: thandle;  
begin  
 
//打开一个pid为的进程,只要是存在的进程,都可以  
  hProcess :
= OpenProcess(PROCESS_DUP_HANDLE, FALSE, 4);  
  
if (hProcess = 0then exit;  
  
//以独占模式打开目标文件  
  hFile :
= CreateFileA(PChar(lpFileName), GENERIC_READ, 00, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);  
  
if (hFile = INVALID_HANDLE_VALUE) then  
  
begin  
    CloseHandle(hProcess);  
    exit;  
  
end;  
  
//把文件句柄复制到pid=4的进程中去,这样,只要pid=4的进程不退出,谁也动不了目标文件  
  DuplicateHandle(GetCurrentProcess(), hFile, hProcess, @hTargetHandle, 
0, FALSE, DUPLICATE_SAME_ACCESS or DUPLICATE_CLOSE_SOURCE);  
  CloseHandle(hProcess);    
end;  
begin  
  SetPrivilege;  
  OccupyFile(’D:\Program Files\工具软件\任务管理.exe’);
//这是要保护的程序名  
end.  

转载于:https://www.cnblogs.com/bsoom/archive/2009/11/15/1603356.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值