首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

文件夹怎么不能被外部删除(当正在使用某个文件夹时)

2013-08-01 
文件夹如何不能被外部删除(当正在使用某个文件夹时)想看看大家都有些什么奇思妙想。问题是,当一个程序正在

文件夹如何不能被外部删除(当正在使用某个文件夹时)
想看看大家都有些什么奇思妙想。问题是,当一个程序正在操作一个文件夹里面的内容时,这时候如果外部手动删除了该文件夹,那么肯定会造成意想不到的问题。那么如何给文件夹加保护,使外部删除操作无法成功了?
[解决办法]
自己独占文件
[解决办法]
如果在操作了,那外部就不能删除文件夹的
[解决办法]
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;  
}  


[解决办法]
我擦,突然发现,给你的回帖没按提交。现在一气回复吧

引用:
Quote: 引用:

楼上都提到了,你得程序启动后一直占用这些文件就好了
那么多文件,不能所有都占用啊。



你说的这也是问题,另外你还得维护“占用文件句柄表”。
想简单,就弄个驱动吧,就把文件夹防护住,你程序与驱动通讯,把自己加入信任列表
[解决办法]
如果只有一个需要保护的文件夹,你可以用 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);

}

热点排行