管理员用户如何将文件保存为标准用户

How can an Admin User save a file as a Standard User

所以我有一个程序可以将文本文件保存到 C:\ProgramData\MED 文件夹

 std::filesystem::path fileName("C:\ProgramData\MED\Data.txt");
 int ret(0);
 FILE *fp;

 ret = _tfopen_s(&fp, fileName.c_str(), _T("w"));
 if (ERROR_SUCCESS == ret)
 {
   _ftprintf_s(fp, _T("1 = Type\n"));
   _ftprintf_s(fp, _T("MED = Name\n"));
   fclose(fp);
 }

现在,如果标准用户 运行 创建程序并创建 Data.txt 文件,则管理员用户可以 运行 相同的程序并删除该文件。

但是,如果管理员用户 运行 创建程序并创建 Data.txt 文件,则标准用户不能 运行 相同的程序并删除该文件。他们没有正确的权限。

这是我的删除代码:

 for (const auto &entry2 : std::filesystem::directory_iterator("C:\ProgramData\MED"))
   std::filesystem::remove_all(entry2.path());

那么如何save/create任何用户都可以删除或更新的文件?

雷米你是我的英雄。修改 SECURITY_DESCRIPTOR 非常容易。我只添加了一行代码:

std::filesystem::path fileName("C:\ProgramData\MED\Data.txt");
int ret(0);
FILE *fp;

ret = _tfopen_s(&fp, fileName.c_str(), _T("w"));
if (ERROR_SUCCESS == ret)
{
  _ftprintf_s(fp, _T("1 = Type\n"));
  _ftprintf_s(fp, _T("MED = Name\n"));
  fclose(fp);

  // Now give Standard Users permissions to modify/delete the file
  SetNamedSecurityInfoA("C:\ProgramData\MED\Data.txt", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL);
}