gpt4 book ai didi

c++ - 在 MoveFile() 操作后重置文件安全性以继承

转载 作者:可可西里 更新时间:2023-11-01 13:29:47 27 4
gpt4 key购买 nike

Windows/C++

正在寻找有关如何在将文件移动到新文件夹后重置文件的安全属性的一些建议。

我们创建文件(以及从服务器下载)的标准方法是在一个临时文件夹中创建文件,然后随着文件流下来,附加文件。下载完成后,我们将文件移动到它的最终目的地。

MoveFile() 将在移动文件时转移文件的安全性。在某些配置中,这会导致问题——最终文件夹的安全默认值与原始文件夹不匹配。我们不能破坏文件夹安全....

所以,最终,我想在移动文件后对文件执行操作。我目前的想法是,我应该获取它进入的文件夹的安全属性,然后在移动完成后应用到文件。

最佳答案

为了扩展 Harry 的回答,这里是完整的代码:

// blank acl used to restore permissions after a file move
ACL g_null_acl = { 0 };
InitializeAcl(&g_null_acl, sizeof(g_null_acl), ACL_REVISION);

DWORD error = SetNamedSecurityInfo(file_path, SE_FILE_OBJECT,
DACL_SECURITY_INFORMATION | UNPROTECTED_DACL_SECURITY_INFORMATION,
NULL, NULL, (PACL)&g_null_acl, NULL);

请记住,调用 SetNamedSecurityInfo (在这种情况下)需要 SE_RESTORE_NAME 权限,因此不能从作为网络服务(或本地服务)运行的服务调用它,因为它们具有 limited permissions .

关于c++ - 在 MoveFile() 操作后重置文件安全性以继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17536692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com