商务服务业代码:关于对指定文件写保护的实现,VC或DELPHI解决都可以

来源:百度文库 编辑:高校问答 时间:2024/05/09 06:22:46
我想做个小程序每当运行对[系统目录\system32\drivers\etc\hosts]文件修改为设定好的内容,然后进行保护,就是任何软件都能打开、可以读,但不可以修改或删除。

请问怎么实现呀?
vb/vc/delphi实现都可以。

这个好做嘛:
使用WIN API函数:LockFile和UnlockFile函数,对文件进行锁定和解锁。
例如:
HANDLE fh;
fh=CreateFile(filename/*你需要加密的文件*/,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD Hsize;
DWORD Lsize;
Lsize=GetFileSize(fh,&size);
if(Lsize!=NULL&&Hsize!=NULL)
{
LockFile(fh,0,0,Lsize,Hsize);
}
这样就不能对文件以任何形式访问和修改

//解锁:
UnlockFile(fh,0,0,Lsize,Hsize);
CloseHandle(fh);

原理:正在运行,或者已经被打开的文件,将不能被修改.
我想可以这么做:
(1)简单的办法
在你设定好内容并保存之后,一直保持该文件在打开状态.

或者

(2)复杂的办法
hook打开文件的API,判断是否打开hosts,如果是,直接返回打开失败;否则,按正常操作.