gpt4 book ai didi

.net - 同一台电脑上所有用户可写的文件夹

转载 作者:可可西里 更新时间:2023-11-01 10:30:07 24 4
gpt4 key购买 nike

我有一个使用嵌入式数据库 (SQLite) 的桌面 .NET WPF 应用程序。数据库文件放在哪里?它是所有用户的同一个数据库。

我尝试使用 CommonAppData,但非管理员用户无法写入它。因此,我尝试使用自定义安装程序操作为所有用户授予对该文件夹的写权限,但在域 PC 上失败了。代码是:

string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyAppName");

DirectorySecurity security = Directory.GetAccessControl(appDataPath);
FileSystemAccessRule rule = new FileSystemAccessRule("Users", FileSystemRights.WriteData, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow);
security.AddAccessRule(rule);
Directory.SetAccessControl(appDataPath, security);

“.\Users”而不是“Users”是否适用于域?

这是最好的方法吗?我可以使用任何其他文件夹吗?

最佳答案

默认情况下没有您可以使用的文件夹。您需要调整目录的 ACL,否则默认权限将只包括文件所有者(创建者)以外的用户的读取权限。

通常您对自己创建的目录拥有所有权利 - 所以我的方法是在 ProgramData 文件夹中创建一个应用程序子文件夹,然后,作为新对象的所有者(通过创建),我可以完全控制它并且可以将我的 all-users-full-access 添加为可继承的访问控制条目。

我也遇到了使用 Windows API 的“用户”问题,不得不改用众所周知的 sid。在德国系统上测试至少“用户”字符串是完全不同的。

关于.net - 同一台电脑上所有用户可写的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2636242/

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