我编写了一个正在加载到作为本地系统运行的服务进程的DLL。我不应该删除我创建的文件吗?
HANDLE hFile = CreateFileW(m_achTempFilePath, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) ;
成功。
然后我运行CloseHandle(hFile)
和DeleteFile(m_achTempFilePath)
删除文件失败并拒绝访问。
我执行了以下操作并将&sa
作为安全属性传递给CreateFile
,然后DeleteFile
成功。但这让每个人都完全掌控。我不希望这样。
这样做的正确方法是什么?
CDacl dacl;
dacl.AddAllowedAce(Sids::World(), SPECIFIC_RIGHTS_ALL | STANDARD_RIGHTS_ALL) ;
CSecurityDesc sd;
sd.SetDacl(dacl);
CSecurityAttributes sa;
sa.Set(sd, true);
答案 0 :(得分:0)
您始终可以在创建文件方法中使用标记FILE_FLAG_DELETE_ON_CLOSE
。这样当你关闭文件的句柄时它会自行清理。该问题本身可能是Windows的基于时间的核心问题。
这项工作应解决问题。