文件夹如何不能被外部删除(当正在使用某个文件夹时)
想看看大家都有些什么奇思妙想。问题是,当一个程序正在操作一个文件夹里面的内容时,这时候如果外部手动删除了该文件夹,那么肯定会造成意想不到的问题。那么如何给文件夹加保护,使外部删除操作无法成功了?
[解决办法]
自己独占文件
[解决办法]
如果在操作了,那外部就不能删除文件夹的
[解决办法]
HANDLE WINAPI CreateFile(
_In_ LPCTSTR lpFileName,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ DWORD dwCreationDisposition,
_In_ DWORD dwFlagsAndAttributes,
_In_opt_ HANDLE hTemplateFile
);
dwShareMode Long,零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问
#include <windows.h>
int main(int argc, char* argv[])
{
HANDLE file_handle;
file_handle = CreateFile(".\\xxoo.exe",
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
NULL,
NULL);
printf("1.GetLastError=%d\n",GetLastError());
printf("Hello World! file_handle=%p\n",file_handle);
getchar();
//CloseHandle(file_handle);
return 0;
}
[解决办法]
我擦,突然发现,给你的回帖没按提交。现在一气回复吧
你说的这也是问题,另外你还得维护“占用文件句柄表”。
想简单,就弄个驱动吧,就把文件夹防护住,你程序与驱动通讯,把自己加入信任列表
[解决办法]
如果只有一个需要保护的文件夹,你可以用 SetCurrentDirectory() 改变当前进程的当前目录。就像cmd/console 的 cd/chdir 命令。
设置后,文件夹就不能被删除了。
[解决办法]
{
HANDLE hFile;
hFile = CreateFile("D:\\a\\c", // dir name
GENERIC_READ, // open for reading
FILE_SHARE_READ
[解决办法]
FILE_SHARE_WRITE, // share for ?
NULL, // no security
OPEN_EXISTING, // existing only
FILE_FLAG_BACKUP_SEMANTICS
[解决办法]
FILE_ATTRIBUTE_DIRECTORY, // dir
NULL); // no attr. template
if (hFile == INVALID_HANDLE_VALUE)
{
int e = GetLastError();
exit(0);
}
}