Получение информации связанной с безопасностью - 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();
}
}
}
}