我目前正在开发一个项目,其中包括Windows上某些文件的完全锁定,完全锁定我的意思是该文件不能被其他进程访问,也不能被系统访问(复制,粘贴,删除)。 Lockfile函数是我最接近解决方案但是,我不确定unlockfile函数是否可以覆盖并授予对不同进程的访问权限。所以我的问题是:Lockfile是否真的密封了文件,是否可以覆盖?
答案 0 :(得分:1)
CreateFile的第三个参数指定共享选项,通过为此参数指定无标记(0),您可以锁定文件。
HANDLE hFile =
CreateFile(L"filename.txt",
GENERIC_READ|GENERIC_WRITE,
0, // by specifying 0, you get exclusive access
NULL,
OPEN_EXISTING,
FILE_FLAG_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
// lock obtained
}
else
{
// file not exist or file is being used by something else
}
关闭返回的文件句柄会释放锁定。 (此外,退出该过程将释放锁定。)
CloseHandle(hFile);
hFile = NULL;