Получение информации связанной с безопасностью - 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
вот код самой программы:
При первоначальном запуске появляется консоль со следующим сообщение (рис.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).
Рисунки прикреплены снизу.
Уважаемые господа программисты подскажите пожалуйста, как с помощью данного программного кода получить информацию о файле, имеющем отношение к безопасности? Что не правильно в данном програмном коде?
За ранее огромное спасибо!!!!!!
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(); } } } }
Решение задачи: «Получение информации связанной с безопасностью»
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(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д