Примеры входа в C #

У меня проблемы с скрытием моей основной формы для формы входа. Когда пользователь вошел в систему, чтобы закрыть форму входа и показать основную форму.

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

Мне не удалось скрыть основную форму, вызванную с помощью

Application.Run(new MainForm());

Форма входа выглядит следующим образом: BUILTIN \ IIS_IUSRS: Разрешить: ReadAndExecute, Синхронизировать BUILTIN \ IIS_IUSRS: Разрешить: -1610612736 ...

Я получаю дубликат FileSystemAccessRule из приведенного ниже кода:

C:\inetpub\wwwroot\AspInfo\Account
BUILTIN\IIS_IUSRS : Allow : ReadAndExecute, Synchronize
BUILTIN\IIS_IUSRS : Allow : -1610612736
NT SERVICE\TrustedInstaller : Allow : FullControl
NT SERVICE\TrustedInstaller : Allow : 268435456

, и я не могу понять, что и почему.

И отображаемые разрешения не соответствуют тому, что я вижу Свойства файла FileManager. Например, как найти разрешение «Список содержимого папки» из этой или аналогичной итерации. Если кто-нибудь знает пример в документации .NET, это будет полезно.

protected void directoryInfo()
{
  var di = new DirectoryInfo(Server.MapPath("/"));
  foreach (DirectoryInfo dir in di.GetDirectories())
  {
    Response.Write(dir.FullName + "<br/>");
    DirectorySecurity ds = dir.GetAccessControl();
    foreach (FileSystemAccessRule fsar in ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
    {
      string userName = fsar.IdentityReference.Value;
      string userRights = fsar.FileSystemRights.ToString();
      string userAccessType = fsar.AccessControlType.ToString();
      Response.Write(userName + " : " + userAccessType + " : " + userRights + "<br/>");
    }
  }
}
10
задан Timwi 18 August 2010 в 00:45
поделиться

1 ответ

Вы получите отдельные записи правил для унаследованных правил и для правил, явно установленных для этой папки. Также есть разница в зависимости от настроек распространения для каждого правила. Например, у вас может быть один набор разрешений, установленный для распространения на вложенные папки, и другой набор для файлов внутри папки. Ваш код также получает правила аудита (SACL) для папки, а вам, похоже, нужны только разрешения доступа (DACL).

Попробуйте следующее:

protected void directoryInfo()
{
  var di = new DirectoryInfo(Server.MapPath("/"));
  foreach (DirectoryInfo dir in di.GetDirectories())
  {
    Response.Write(dir.FullName + "<br/>");
    DirectorySecurity ds = dir.GetAccessControl(AccessControlSections.Access);
    foreach (FileSystemAccessRule fsar in ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
    {
      string userName = fsar.IdentityReference.Value;
      string userRights = fsar.FileSystemRights.ToString();
      string userAccessType = fsar.AccessControlType.ToString();
      string ruleSource = fsar.IsInherited ? "Inherited" : "Explicit";
      string rulePropagation = fsar.PropagationFlags.ToString();
      string ruleInheritance = fsar.InheritanceFlags.ToString();
      Response.Write(userName + " : " + userAccessType + " : " + userRights + " : " + ruleSource + " : " + rulePropagation + " : " + ruleInheritance + "<br/>");
    }
  }
}

Разрешение ReadAndExecute, которое вы видите, включает разрешение "List Folder Contents". Вы можете проверить наличие отдельных разрешений, используя соответствующий флаг в перечислении FileSystemRights. For example:

if (fsar.FileSystemRights && FileSystemRights.ListDirectory)
  Console.WriteLine("Has List Directory permission");
14
ответ дан 3 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: