Получение информации связанной с безопасностью - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго время суток, возникла такая проблема бьюсь уже 2 день. Нужно написать программу (которая используя пространство имен System.Security, содержащие классы .NET, имеющие отношения к безопасности) будет выводить атрибуты безопасности файла, имя которого передано через командную строку, к примеру в командной строке вводится: C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ShowFileSecurity\ShowFileSecurity\bin\Debug>ShowFileSecurity.exe ShowFileSecurity.pdb На консоль должна выводится примерно такая информация: IdentifyReference: DNAPC-Dekstop\ DNAPC Access control type: Allow Rights:FullControl Inherited? True вот код самой программы:
using System;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
 
namespace ShowFileSecurity
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Usage: ShowFileSecurity filename");
                return;
            }
            string filename = args[0]; 
            FileInfo info = new FileInfo(filename);
            FileSecurity security = info.GetAccessControl();
            ShowSecurity(security);
        }
 
        private static void ShowSecurity(FileSecurity security)
        {
            AuthorizationRuleCollection coll = security.GetAccessRules(true, true, typeof(NTAccount));
            foreach (FileSystemAccessRule rule in coll)
            {
                Console.WriteLine("IdentityReference: {0}", rule.IdentityReference);
                Console.WriteLine("Access control type: {0}", rule.AccessControlType);
                Console.WriteLine("Rights: {0}", rule.FileSystemRights);
                Console.WriteLine("Inherited? {0}", rule.IsInherited);
                Console.WriteLine();
            }
        }
    }
}
При первоначальном запуске появляется консоль со следующим сообщение (рис.ShowFileSecurity1.png) и на этом все. Я через свойство проекта ShowFileSecurity Property -> Debug указал путь к исполняемому файлу, указав в Command line arguments сторку: C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C#\ShowFileSecurity\ShowFileSecurity\bin\Debug>ShowFileSecurity.exe ShowFileSecurity.pdb (рис.ShowFileSecurity(Property).png) При компиляции и запуске программы наисполнение выскакивает ошибка:"Процесс не может получить доступ к исполняемому файлу, потому что файл занят другим процессом" (рис.ShowFileSecurity2.png). Рисунки прикреплены снизу. Уважаемые господа программисты подскажите пожалуйста, как с помощью данного программного кода получить информацию о файле, имеющем отношение к безопасности? Что не правильно в данном програмном коде? За ранее огромное спасибо!!!!!!

Решение задачи: «Получение информации связанной с безопасностью»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
                    if (args.Length < 1)
            {
                Console.WriteLine("Usage: ShowFileSecurity filename");
                
            } 
            FileInfo info = new FileInfo(@"D:\new.txt");
            Console.WriteLine(info.ToString());
            FileSecurity security = info.GetAccessControl();
            ShowSecurity(security);
            Console.ReadKey();
        }
      
 
        private static void ShowSecurity(FileSecurity security)
        {
            AuthorizationRuleCollection coll = security.GetAccessRules(true, true, typeof(NTAccount));
            foreach (FileSystemAccessRule rule in coll)
            {
                Console.WriteLine("IdentityReference: {0}", rule.IdentityReference);
                Console.WriteLine("Access control type: {0}", rule.AccessControlType);
                Console.WriteLine("Rights: {0}", rule.FileSystemRights);
                Console.WriteLine("Inherited? {0}", rule.IsInherited);
                Console.WriteLine();
            }
        }
        
           
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5