c# - C# 目录的组权限

标签 c# .net file-permissions

我正在使用控制台应用程序 Visual Studio 2012 来获得组对目录的许可,但收到错误“无法翻译部分或所有身份引用。”

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            CreateDirectory(@"C:\TestDirectory", @"NAVEEN\IIS_IUSRS");
        }
        public static void CreateDirectory(string DirectoryName, string UserAccount)
        {
            if (!System.IO.Directory.Exists(DirectoryName))Directory.CreateDirectory(DirectoryName);          
            AddUsersAndPermissions(DirectoryName, UserAccount, FileSystemRights.FullControl, AccessControlType.Allow);
        }
        public static void AddUsersAndPermissions(string DirectoryName, string UserAccount, FileSystemRights UserRights, AccessControlType AccessType)
        {
            try
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(DirectoryName);
                DirectorySecurity dirSecurity = directoryInfo.GetAccessControl();
                dirSecurity.AddAccessRule(new enter code hereFileSystemAccessRule(UserAccount, UserRights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessType));
                directoryInfo.SetAccessControl(dirSecurity);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

}

最佳答案

从组中删除PC的名称,您只需要“IIS_USRS”。

通过这个单一的更改,下面的代码运行没有问题。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.AccessControl;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            CreateDirectory(@"C:\TestDirectory", @"IIS_IUSRS");
        }
        public static void CreateDirectory(string DirectoryName, string UserAccount)
        {
            if (!System.IO.Directory.Exists(DirectoryName)) Directory.CreateDirectory(DirectoryName);
            AddUsersAndPermissions(DirectoryName, UserAccount, FileSystemRights.FullControl, AccessControlType.Allow);
        }
        public static void AddUsersAndPermissions(string DirectoryName, string UserAccount, FileSystemRights UserRights, AccessControlType AccessType)
        {
            try
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(DirectoryName);
                DirectorySecurity dirSecurity = directoryInfo.GetAccessControl();
                dirSecurity.AddAccessRule(new FileSystemAccessRule(UserAccount, UserRights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessType));
                directoryInfo.SetAccessControl(dirSecurity);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

关于c# - C# 目录的组权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34670188/

相关文章:

c# - C# Windows 应用程序中 Tabcontrol 的背景颜色

c# - 如何使用 System.Drawing 绘制表格

.net - ServiceStack 中提供基于 token 的身份验证的推荐实现模式是什么?

python - 在python中检查文件的权限

directory - 如何使用 cmake "install directory"指令保留文件权限?

C# - 将随机数生成到字段中

c# 将多行字符串传递给函数并返回数组

c# - 带窗口句柄的 .net 视频记录

.net - 使用 Active Directory 进行 .NET 中的用户组和角色管理

java - 无法初始化类 com.sun.jna.Native