Привилегия C# создает проблемы при создании папок из службы Windows, работающей под учетной записью локальной системы.
У меня есть служба, работающая как локальная система. Я создаю несколько папок из сервиса. Эти папки создаются, которые не дают людям в группе "Пользователи" в Windows 7 права на запись.
Как я могу создать эти папки, которые предоставляют всем права на запись?
1 ответ
Вы можете использовать логику, которую я нашел в этом примере
public class Permissions
{
public void addPermissions(string dirName, string username)
{
changePermissions(dirName, username, AccessControlType.Allow);
}
public void revokePermissions(string dirName, string username)
{
changePermissions(dirName, username, AccessControlType.Deny);
}
private void changePermissions(string dirName, string username, AccessControlType newPermission)
{
DirectoryInfo myDirectoryInfo = new DirectoryInfo(dirName);
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
string user = System.Environment.UserDomainName + "\\" + username;
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(
user,
FileSystemRights.Read | FileSystemRights.Write | FileSystemRights.ExecuteFile | FileSystemRights.Delete,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
newPermission
));
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
}
}
Я также нашел эту статью, которая имеет другие примеры