Получить список групп-пользователей-разрешений-специальных разрешений для папки в Windows 2003 программно - PullRequest
7 голосов
/ 11 октября 2010

Я использую сервер Windows 2003 и мне нужно получить информацию о папке безопасности, программно используя C #.

Я хочу создать инструмент для проверки прав доступа.Мне нужно получить группы, пользователей, разрешения и специальные разрешения для папки,

C: \ Documents and Settings \ Все пользователи \ Данные приложения \ Microsoft \ Crypto \ RSA \ MachineKeys

edit:

ниже приведен пример кода для метода GetSecurityDescriptorSddlForm.

public static string GetObjectPermission(string fullFolderName)
{
    FileSecurity fileSecure = File.GetAccessControl(fullFolderName);
    StringBuilder acer = new StringBuilder();
    fileSecure.GetSecurityDescriptorSddlForm(AccessControlSections.All);

    foreach (FileSystemAccessRule ace in fileSecure.GetAccessRules(true, true, typeof(NTAccount)))
    {
        acer.Append(ace.FileSystemRights + ":" + ' ' + ace.IdentityReference.Value + "\n");
    }
    return acer.ToString();
}

Этот пример кода покажет, какой NTAccount может изменить или прочитать папку, напримерфункция.

Как я могу получить группы и специальные разрешения ??

Какой-нибудь пример кода, предложения?

Ответы [ 2 ]

2 голосов
/ 07 июля 2014

Не могли бы вы использовать DirectoryInfo для получения ACL?Все ACL должны быть там (пользователь, группа):

        // Create a new DirectoryInfo object.
        DirectoryInfo dInfo = new DirectoryInfo(FileName);

        // Get a DirectorySecurity object that represents the  
        // current security settings.
        DirectorySecurity dSecurity = dInfo.GetAccessControl();

Полная документация: http://msdn.microsoft.com/en-us/library/c1f66bc2(v=vs.110).aspx

0 голосов
/ 27 марта 2018

Если вы хотите получить весь список тузов в ACL для папки, вы должны использовать этот метод, также с помощью этого метода вы можете получить доступ к другим свойствам туза, например ace.AccessControlType , ace. Наследуется ;

 public static void CheckAceInformation(string FileName,string LoginName)
        {
            string FileSystemRightsValue = "";

            FileSecurity security = File.GetAccessControl(FileName);

            AuthorizationRuleCollection acl = security.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));

            foreach(FileSystemAccessRule ace in acl)
            {
                if(ace.IdentityReference.Value == LoginName)
                {
                    FileSystemRightsValue = ace.FileSystemRights.ToString();

                    Console.WriteLine(LoginName +  "  your permission value is" + FileSystemRightsValue)

                    return;
                }
            }
            Console.WriteLine(LoginName + "your not permission in this folder");

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...