我需要一个所有本地用户都可以编辑的文件。应用程序将公共信息保存在 ProgramData 下自己的文件夹中的所有用户。我需要保证对所有用户的读写,信息太少了,不值得使用数据库。
我从以下位置获取文件夹的路径:Path.Combine(Application.CommonAppDataPath, "InfoConfig");
所有用户都可以在此文件夹中读取、写入和创建。其他用户创建的文件除外。
我已经尝试删除 Creator Owner 但没有成功。所以我最后一次尝试不是从容器文件夹继承,而是从头开始为系统、管理员和用户创建权限。但它也不起作用,这是我的代码。
string sharedFolder = Path.Combine(Application.CommonAppDataPath, "InfoConfig");
if (!Directory.Exists(sharedFolder))
{
DirectoryInfo directoryInfo = Directory.CreateDirectory(sharedFolder);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity.SetAccessRuleProtection(true, false);
FileSystemRights fileSystemRights =
FileSystemRights.FullControl |
FileSystemRights.Modify |
FileSystemRights.Read |
FileSystemRights.Delete;
SecurityIdentifier usersSid =
new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
SecurityIdentifier systemSid =
new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null);
SecurityIdentifier adminsSid =
new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
FileSystemAccessRule rule =
new FileSystemAccessRule(systemSid, fileSystemRights, AccessControlType.Allow);
directorySecurity.AddAccessRule(rule);
rule = new FileSystemAccessRule(adminsSid, fileSystemRights, AccessControlType.Allow);
directorySecurity.AddAccessRule(rule);
rule = new FileSystemAccessRule(usersSid, FileSystemRights.Read
| FileSystemRights.Write
| FileSystemRights.Modify,
AccessControlType.Allow);
directorySecurity.AddAccessRule(rule);
directoryInfo.SetAccessControl(directorySecurity);
}
它仍然不起作用。我究竟做错了什么?