我如何完全锁定Windows上的文件

时间:2016-11-03 16:46:51

标签: windows winapi

我目前正在开发一个项目,其中包括Windows上某些文件的完全锁定,完全锁定我的意思是该文件不能被其他进程访问,也不能被系统访问(复制,粘贴,删除)。 Lockfile函数是我最接近解决方案但是,我不确定unlockfile函数是否可以覆盖并授予对不同进程的访问权限。所以我的问题是:Lockfile是否真的密封了文件,是否可以覆盖?

1 个答案:

答案 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;