gpt4 book ai didi

c++ - 如何赋予 'Everybody' 文件的全部权限(以编程方式)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:20 25 4
gpt4 key购买 nike

我正在修改旧的 C++ 程序以在 Vista 上运行。它不需要管理员权限。

我更改了代码以将日志文件放在 \ProgramData\MyApp\ 中。这些日志文件是用 stdio 函数(fopenfprintffclose)编写的。

问题是:

  1. UserA 首先运行程序,它使用 CreateFile()

    创建 \ProgramData\MyApp\MyLogFile.txt
  2. 接下来 UserB 运行程序,它尝试附加到 MyLogFile.txt 并被拒绝访问。

我尝试创建一个空的 SECURITY_DESCRIPTOR 并将其传递给 CreateFile()。这确实创建了一个“未分配权限”的文件,但似乎第一个写入该文件的用户获得了所有权,之后所有其他非管理员用户都不走运。

所有用户共享相同的日志文件很重要,但尽可能少地更改代码也很重要。

编辑添加:

\ProgramData\MyApp 由标准 Visual Studio 安装程序创建。 (我没有看到任何设置目录安全性的地方。)当它创建 \MyApp 时,它授予 Users 这些权限:

Read & execute  
List folder contents
Read
Special permissions

Advanced 下,我看到特殊权限包括:

Create files / write data
Create folders / append data
Write attributes
Write extended attributes

最佳答案

为大家的尝试+1,但最终我在这里找到了答案:

how to change the ACLs from c++?

我确实不得不更改该解决方案的一行,从此:

ea[0].grfAccessMode = DENY_ACCESS;

为此:

ea[0].grfAccessMode = GRANT_ACCESS;

关于c++ - 如何赋予 'Everybody' 文件的全部权限(以编程方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059343/

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