Сканер безопасности операционных систем

 

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Тульский государственный университет

Кафедра ЭВМ









Пояснительная записка к курсовой работе по дисциплине

«БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ»



Выполнил студент группы 230791Овсянкин Н.С.

Руководитель: доцент кафедры ЭВМ, к.т.н.

Новиков А.С.









Тула 2012 г.


УТВЕРЖДАЮ

Заведующий кафедрой

………………………………………..

"………" …………………….20…..Г.


З А Д А Н И Е

К курсовой работе по дисциплине

«БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ»

студенту группы 230791 Овсянкина Никиты Сергеевича

Тема проекта: Сканер безопасности ОС

Входные данные:

1.Установленные обновления Microsoft Windows.

.Сетевые настройки (TCP IP и т.д.)Открытые ресурсы (совместно используемые ресурсы, разделяемые ресурсы NetBIOS (NetBIOS Share)

.Файловая система (Тип файловой системы, определить права на доступ к особо важным файлам, разрешения на основные файлы и папки).

.Получение конфигурации компьютера.

Задание получил:

График выполнения проекта

выдача задания "……" ………………….20….г.

срок предоставления готового задания "……." …………….20……г.

Замечания консультанта …………………………………………………

……………………………………………………………………………

………………………………………………………………………………

К защите. Консультант (руководитель) …………………………………

"……" ………………….20…..г.



1.Введение


Курсовая работа по безопасности операционных систем выполнена для изучения устройства, принципов организации и взаимодействия подсистем защиты в ОС различной архитектуры, изучения защищенности заданных конфигураций различных операционных систем и приобретения навыков построения комплексной системы безопасности в заданной конфигурации операционной системы.

Порядок функционирования систем безопасности ОС в общем случае определяется большим числом настроек параметров и элементов ее структуры, которые при инсталляции ОС по умолчанию устанавливаются таким образом, что решению задачи защиты информации в ОС отводится второстепенная роль. Данное обстоятельство вынуждает администратора ОС самостоятельно выбрать тот или иной путь решения задачи защиты информации.

2.Теоретическая справка


2.1Специальные классы WMI

Management Instrumentation (WMI) в дословном переводе - это инструментарий управления Windows. Если говорить более развернуто, то WMI - это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows.

Технология WMI - это расширенная и адаптированная под Windows реализация стандарта WBEM (на англ.), принятого многими компаниями, в основе которого лежит идея создания универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML.

В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в неё свои классы, объекты, методы и свойства.

WMI, основанный на CIM, также является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

Важной особенностью WMI является то, что хранящиеся в нём объекты соответствуют динамическим ресурсам, то есть параметры этих ресурсов постоянно меняются, поэтому параметры таких объектов не хранятся постоянно, а создаются по запросу потребителя данных. Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows:

%SystemRoot%\System32\WBEM\Repository\FS

Доступ к WMI может осуществляться через интерфейсы COM+ и .NET Framework. Это означает, что любой язык программирования, который поддерживает взаимодействие с Microsoft Windows COM+ и .NET Framework, может использоваться для работы с WMI. К перечню таких языков, в частности, относятся: VBScript, Visual Basic и Visual Basic .NET, Java Script, Python, Perl, PHP, C#, C++, Pascal, TCL и другие.

Технология WMI может использоваться для получения данных об аппаратном и программном обеспечении компьютера с помощью клиентских скриптов и приложений, а также для предоставления информации самой WMI путем создания провайдеров.


2.2Сценарии PowerShell

PowerShell - расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован в сентябре 2003 года под кодовым названием Monad. Версия 1.0 выпущена в 2006 году и сейчас доступна для Windows XP с пакетом обновления 2 - 3, Windows Server 2003, Windows Vista, и встроена в Windows Server 2008 как необязательный компонент.PowerShell 2.0 был выпущен в составе Windows 7 и Windows Server 2008 R2 как неотъемлемый компонент системы. Кроме того, вторая версия доступна и для других систем, таких как Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1 и Windows Server 2008.PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные команды командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.

Эти административные задачи обычно выполняются с помощью командлетов (в оригинале cmdlets), которые являются специализированными классами .NET. Пользователь может комбинировать их в скриптах (сценариях), используя различные конструкции, утилиты командной строки и обращения к обычным классам .NET, объектам WMI или COM. Кроме того, можно использовать различные хранилища данных, такие как файловая система или реестр Windows, которые предоставляются PowerShell посредством поставщиков (англ. providers).PowerShell также предоставляет механизм встраивания, благодаря которому исполняемые компоненты PowerShell могут быть встроены в другие приложения. Эти приложения затем могут использовать функциональность PowerShell для реализации различных операций, включая предоставляемые через графический интерфейс. Этот подход применен в Microsoft Exchange Server 2007 для реализации управляющей функциональности в виде командлетов PowerShell и графических утилит управления в виде оболочек PowerShell, которые вызывают необходимые командлеты. Таким образом, графический интерфейс управления находится поверх промежуточного слоя - PowerShell. Другие приложения Microsoft, включая Microsoft SQL Server 2008, System Center Operations Manager и System Center Data Protection Manager также предоставляют доступ к своим интерфейсам управления через командлеты PowerShell. В будущем все серверные приложения Microsoft на платформе Windows будут использовать PowerShell тем или иным образом.


2.3Стандартные утилиты управления Microsoft Windows


Операционная система Microsoft Windows предоставляет широкий набор утилит для администрирования.

При установке операционной системы, по умолчанию ставится целый пакет стандартных программ Windows, о которых простому пользователю просто ничего не известно. На эти программы нет ярлыков, они нигде не упоминаются, кроме справки, да в советах специалистов.

Основные из них:

·cleanmgr.exe - Disk Space Cleanup Manager for Windows

·cmd.exe - Windows Command Processor (Командная строка)

·convert.exe - File System Conversion Utility

·drwatson.exe - Доктор Ватсон

·explorer.exe - Windows Explorer

·ftp.exe - File Transfer Program

·iexpress.exe - Wizzard

·ipconfig.exe - IP Configuration Utility

·mmc.exe - Microsoft Management Console

·msconfig.exe - System Configuration Utility

·netstat.exe - TCP/IP Netstat Command

·nslookup.exe - nslookup APP

·ping.exe - TCP/IP Ping Command

·sfc.exe - System File Checker

·shutdown.exe - Windows Remote Shutdown Tool

·tracert.exe - TCP/IP Traceroute Command

Данный список включает далеко не все программы, встроенные в Windows.

Стандартные утилиты дают возможности управления групповыми политиками(gpedit.msc), политиками аудита(auditpol.exe) и т.д.


3. Основное содержание


3.1Постановка задачи и пути ее решения


При выполнении курсовой работы студент должен разработать программу-анализатор заданной конфигурации определенной ОС. Разработанная программа в соответствии с заданными параметрами должна оценить безопасность конфигурации ОС и указать пути ее улучшения.

Задания:

1.Установленные обновления Microsoft Windows.

.Сетевые настройки (TCP IP и т.д.)Открытые ресурсы (совместно используемые ресурсы, разделяемые ресурсы NetBIOS (NetBIOS Share)

.Файловая система (Тип файловой системы, определить права на доступ к особо важным файлам, разрешения на основные файлы и папки).

.Получение конфигурации компьютера.

Выполнение поставленной задачи производилось на базе операционной системы Microsoft Windows 7. В операционной системе существует множество способов определения и изменения конфигурации компьютера. В ходе выполнения курсовой работы мной были использованы: специальные классы WMI, сценарии PowerShell, стандартные утилиты управления Microsoft Windows.


3.2Выбор языка программирования


При выборе языка программирования основными требованиями были:

·Поддержка Visual Studio 2008;

·Поддержка ООП;

·Поддержка визуальных компонентов;

·Совместимость с Windows 7 версия 64 bit;

·Наличие встроенных инструментов администрирования Windows.

Из всех языков программирования под требования подходят следующие: VisualC#, VisualC++, VisualBasic.

В качестве языка программирования был выбран VisualC# потому что этот язык имеет наибольшую интеграцию с OC Windows,обладает наибольшим числом средств администрирование windows.


3.3Решение в общем виде


3.3.1Получение конфигурации компьютера

Конфигурация компьютера предоставляется из WMI. Технология WMI (Windows Management Instrumentation) является средством поддержки управления Windows. Строго, говоря WMI - это подпрограммы, позволяющие драйверам публиковать информацию о своих рабочих характеристиках и конфигурации, а так же получать команды от службы WMI.

Классы WMI, предоставляющие информации об аппратаной конфигурации компьютера:

·Win32_PnPEntity представляет все установленные устройства Plug-and-Play.

·Win32_SystemEnclosure представляет свойства, связанные с физическим системным корпусом компьютера.

·Win32_BaseBoard предоставляет сведения о материнской плате.

·Win32_MotherboardDevice предоставляет сведения о материнской плате.

·Win32_OnBoardDevice представляет общие адаптеры, встроенные в системную плату.

·Win32_Bus представляет физические шины.

·Win32_SystemSlot предоставляет информацию о слотах системной платы.

·Каждому процессору в системе соответствует экземпляр класса Win32_Processor в WMI. На многопроцессорной машине таких экземпляров будет несколько.

·Win32_CacheMemory представляет внутреннюю и внешнюю кэш-память в компьютерной системе.

·Win32_PhysicalMemory представляет физическое устройство памяти, расположенное на компьютере и доступное операционной системе.

·Win32_MemoryDevice предоставляет информацию о начальных и конечных адресах для всех устройств памяти, установленных на компьютере.

·Win32_MemoryArray предоставляет информацию о начальных и конечных адресах для всех массивов памяти, установленных на компьютере.

·Win32_PortConnector предоставляет информацию о физических портах подключения, таких, как Centronics, PS/2 и т.д.

·Win32_Keyboard содержит сведения о клавиатуре.

·Win32_PointingDevice содержит сведения о мыши.

·Win32_SoundDevice содержит сведения о звуковой карте.

·Win32_VideoController содержит сведения о видеокарте.

·Win32_NetworkAdapter и Win32_NetworkAdapterConfiguration содержат сведения о сетевых адаптерах.

·Win32_DesktopMonitor предоставляет сведения о мониторе, подключённом к компьютерной системе.

·Win32_DiskDrive предоставляет сведения о дисководах.

·Win32_CDROMDrive предоставляет сведения об устройствах CD-ROM.

Некоторые из них используются в курсовой работе.

Получение информации о конфигурации компьютера из классов, описанных выше реализуется с помощью скриптов для PowerShell. Общий вид такого скрипта следующий:WmiObject -Class Win32_*** | Select-Object | format-list

3.3.2Просмотр файловой системы компьютера и информация о ней

Для того, чтобы показать файловую систему компьютера, а именно ее структуру, используется дерево каталогов, построенное с помощью элемента treeView. Также отображаются файлы каждого каталога. При нажатии на любой файл будут получены сведения о доступе к этому файлу и разрешения для разных пользователей.


3.3.3Получение информации об обновлениях Microsoft Windows

Для почения информации об обновлениях Windows я использовал PowerShell, а имменно следующий скрипт:

$Session = New-Object -ComObject Microsoft.Update.Session

$Searcher = $Session.CreateUpdateSearcher()

$HistoryCount = $Searcher.GetTotalHistoryCount()

$Searcher.QueryHistory(1,$HistoryCount) |Object Date, Title, Description | format-list

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


3.3.4Получение сетевых настроек

Для получения настроек сетевых адаптеров используется PowerShell и WMI класс Win32_NetworkAdapterConfiguration. С помощью следующего скрипта мы получаем необходимые данные:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE | Select-Object DHCPEnabled, IPAddress , ServiceName, Description, Index

Данный скрипт выводит на экран название сетевого адаптера, IP адресс , описание и другую информацию.

3.4Алгоритм запуска программы PowerShell с заданными скриптами из Visual C#


3.4.1Описание входных и выходных данные алгоритма

Входные данные: текстовая переменная содержащая скрипт PowerShell.

Выходные данные: текстовая переменная содержащая результат работы спирта PowerShell.


3.4.2Алгоритм

1)Для работы алгоритма необходимо подключить следующие библиотеки:

·System.Collections.Generic;

·System.Linq;

·System.Text;

·System.Collections.ObjectModel;

·System.Management.Automation;

·System.Management.Automation.Runspaces.

2)В проекте необходимо добавить ссылку на сброку System.Management.Automation. Она располагается в каталоге C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0.;

3)Создать процесс в OC

3.1)Создать экземпляр класса Runspace;

3.2)Присвоить экземпляру класса Runspace значение статического метода CreateRunspacе класса RunspaceFactory;

4)Открыть процесс созданный в п.3

.1)Вызвать метод Open у экземпляра класса Runspace;

)Создать конвейер

.1)Создать экземпляр класса Pipeline;

.2)Для этого вызвать метод CreatePipeline класса Runspace;

5.3)Присвоить экземпляту класса Pipeline созданного в п 5.1 значение фунекции вызываемой в п 5.2;

6)Добавить сценария

.1)Выполнить команду AddScript экземпляра обьекта Pipeline созданого в п5.1;

)Запуск сценария

.1)Создать экземпляр класса Collection;

.2)Вызвать метод Invoke класса Pipeline;

.3)Присвить экземпляр класса Collection, вызванного в п7.1 значение метода Invoke(п.7.3);

)Закрыте процесса

8.1)Вызвать метод close у экземпляра класса Runspace;

После п.8 алгоритм окончен для вывода результата в одну строку для этого необходимо:

)Конвертация результата в одну строку с использованием StringBuilder

.1)Cоздать экземпляр класса StringBuilder;

.2)Для каждого обьекта в Collection выполнить метод AppendLine экземпляра класса StringBuilder у качестве параметра указать обьекта в Collection;


3.4.3Пример алгоритма реализованного в среде Visual Studio 2008

Runspace runspace = RunspaceFactory.CreateRunspace(); // создание процесса.Open(); // открытие процессаpipeline = runspace.CreatePipeline(); // создание конвейера.Commands.AddScript(scriptText); //добавление сценария

pipeline.Commands.Add("Out-String"); // эта команда форматирует вывод. Без нее возвращаются реальные объекты.<PSObject> results = pipeline.Invoke(); // запуск сценария.Close(); // закрыте процессаstringBuilder = new StringBuilder(); // конвертация результата в одну строку с использованием StringBuilder;

foreach (PSObject obj in results)

{.AppendLine(obj.ToString());

}stringBuilder.ToString(); // возврат значения

microsoft windows обновление файловый

4. Структура программы


Программа состоит из одного главного файла Form1.cs. В нем реализованы все необходимые алгоритмы для получения информации по каждому из заданий.


.1 Файл Form1.cs:


В первую очередь этот файл содержит метод для выполнения скриптов для PowerShell: Runscript . С помощью него выполняются все необходимые скрипты в программе.

public static string Runscript(string scriptname) - функция выполняющая скрипт PowerShell из файла. В качестве аргумента принимает путь в файлу скрипта. Возвращает результаты выполнения скрипта в виде строки.

Также в файле находятся следующие функции:


4.1.1Public void DriveTreeInit()

В самом начале своей работы этот метод получает список логических дисковых устройств, установленных в системе, и сохраняет его в массиве drivesArray.

Далее метод DriveTreeInit вызывает метод treeView1.BeginUpdate. Этот метод временно блокирует перерисовку окна дерева до тех пор, пока не будет вызван метод treeView1.EndUpdate. Пара этих методов используется в том случае, когда нужно добавить, удалить или изменить большое количество элементов дерева. Если не заблокировать перерисовку окна, на обновление дерева уйдет слишком много времени.

В классе TreeView определено свойство Nodes, хранящее все узлы дерева. Перед тем как приступить к заполнению дерева, метод DriveTreeInit удаляет все узлы, вызывая для этого метод treeView1.Nodes.Clear.

Заполнение дерева происходит в цикле:

foreach(string s in drivesArray)

{drive = new TreeNode(s, 0, 0);.Nodes.Add(drive);(drive);

}

Далее вызывается метод GetDirs, добавляющий в дерево список содержимого корневого каталога текущего дискового устройства.


4.1.2Public void GetDirs (TreeNode node)

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

Первым делом метод GetDirs удаляет все элементы из текущего узла, вызывая для этого метод node.Nodes.Clear.

Далее метод переписывает в переменную fullPath типа string полный путь node.FullPath к узлу дерева. Эта строка получается объединением (конкатенацией) текстовых строк всех родительских узлов. Если корневой узел хранит текстовую строку обозначения логического диска, то после выполнения этой процедуры в переменной fullPath будет храниться полный путь к файлу или каталогу.

Далее для получения содержимого каталога, на который ссылается переменная fullPath, мы используем рассмотренный ранее метод GetDirectories. При возникновении исключения программа просто возвращает управление, не выполняя над узлом дерева никаких функций.

В том случае если содержимое каталога было успешно получено, оно сохраняется в массиве diArray.

Далее содержимое массива diArray используется для заполнения узла дерева содержимым каталога:

foreach (DirectoryInfo dirinfo in diArray)

{dir = new TreeNode(dirinfo.Name, 0, 0);

node.Nodes.Add(dir);

}

Здесь в цикле создаются объекты класса TreeNode, т.е. узел дерева. В качестве первого параметра конструктору этого класса передается имя текущего элемента (каталога или файла) обрабатываемого каталога. Эти объекты добавляются в дерево рассмотренным ранее методом node.Nodes.Add.


4.1.3private void treeView1_OnBeforeExpand(object sender, TreeViewCancelEventArgs e)

Событие BeforeExpand возникает при попытке пользователя раскрыть узел дерева. В этом случае наш обработчик заполняет открываемый узел при помощи рассмотренного ранее метода GetDirs. Ссылка на узел извлекается из поляe.Node.Nodes, передаваемого обработчику событий в качестве параметра.


4.1.4private void treeView1_OnAfterSelect(object sender, TreeViewEventArgs e)

Прежде всего, метод извлекает ссылку на узел дерева, выделенный пользователем, из свойства Node параметра обработчика событий treeView1_OnAfterSelect.selectedNode = e.Node;

Далее, полный путь к выделенному узлу записывается в поле fullPath класса := selectedNode.FullPath;

Так как наше дерево содержит только обозначения дисков и каталогов, то это будет путь либо к корневому каталогу диска, либо к одному из подкаталогов.

Далее мы создаем объект класса DirectoryInfo и получаем списки всех файлов и каталогов, располагающихся в каталоге, выделенном пользователем в дереве:

DirectoryInfo di = new DirectoryInfo(fullPath);[] fiArray;[] diArray;

{= di.GetFiles();

diArray = di.GetDirectories();

}

Catch

{

return;

}

Для выполнения этих операций применяются методы GetFiles и GetDirectories. Перечень файлов обработчик события сохраняет в массиве fiArray, а перечень каталогов - в массиве diArray.

Вооружившись перечнями файлов и каталогов, мы приступим к добавлению элементов к нашему списку ListView, очистив предварительно содержимое списка методом Clear:.Items.Clear();

Наполнение списка именами каталогов выполняется в цикле foreach:

foreach(DirectoryInfo dirInfo in diArray)

{lvi = new ListViewItem(dirInfo.Name);.SubItems.Add("0");.SubItems.Add(dirInfo.LastWriteTime.ToString());.ImageIndex = 0;.Items.Add(lvi);

}

4.1.5private void listView1_OnItemActivate(object sender, EventArgs e)

Предусмотрев обработчик события ItemActivate к элементу управления ListView, мы сможем отображать в окне текстового редактора права на доступ к файлам, отображаемых в правом верхнем фрейме. Это событие возникает, когда пользователь дважды щелкает строку в окне списка ListView.


4.1.6private void button1_Click(object sender, EventArgs e)

С помощью этого обработчика запускается скрипт обновления.ps1, благодаря которому мы получаем информацию об обновлениях ОС. Вся информация выводится в textBox1.


4.1.7 private void button2_Click(object sender, EventArgs e)

Этот обработчик вызывает функцию Runscript, которая в свою очередь выполняет скрипт PowerShell сетевые_настройки.ps1. После выполнения этого скрипта в textbox2 выводится информация о всех работающих сетевых адаптерах.


4.1.8 private void button3_Click(object sender, EventArgs e)

В этом обработчике также используется функция Runscript. С помощью нее запускаются следующие скрипты, необходимые для получения информации о конфигурации компьютера:

·proc.ps1 - информация о процессоре

·op.ps1 - количество оперативной памяти компьютера

·disc.ps1 - информация о жестких дисках

·drive.ps1 - информация о CD приводах

·monitor.ps1 - название и разрешение монитора

·video.ps1 - информация о видео карте

·audio.ps1 - информация о звуковой карте

4.1.7

4.1.8private void button5_Click(object sender, EventArgs e)

С помощью этого обработчика мы получаем информацию о имеющихся в системе жестких дисках, их файловой системе и объеме.


4.1.9Диаграмма взаимодействия методов


Диаграмму взаимодействия методов можно увидеть на рисунке 1.


Рис. 1. Диаграмма взаимодействия методов



5.Заключение


В ходе выполнения курсовой работы мной были изучены устройство, принципы организации и взаимодействия различных подсистем защиты в ОС. Также мной были получены навыки использования сценариев PowerShell, классов WMI, стандартных средств операционной системы. В ходе разработки была глубже изучена среда разработки Microsoft Visual Studio 2010 а также операционная система Microsoft Windows 7.


6.Приложения


Приложение 1. Листинг программы


Файл Form1.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Collections.ObjectModel;System.Management.Automation;System.Management.Automation.Runspaces;System.IO;WindowsFormsApplication1

{partial class Form1 : Form

{Form1()

{();();

}temp;void DriveTreeInit()

{[] drivesArray = Directory.GetLogicalDrives();.BeginUpdate();.Nodes.Clear();(string s in drivesArray)

{drive = new TreeNode(s, 0, 0);.Nodes.Add(drive);(drive);

}.EndUpdate();

}

/// Получение списка каталоговvoid GetDirs(TreeNode node)

{[] diArray;.Nodes.Clear();fullPath = node.FullPath;di = new DirectoryInfo(fullPath);

{= di.GetDirectories();

}

{;

}(DirectoryInfo dirinfo in diArray)

{dir = new TreeNode(dirinfo.Name, 0, 0);.Nodes.Add(dir);

}

}void treeView1_OnBeforeExpand(object sender, TreeViewCancelEventArgs e)

{.BeginUpdate();(TreeNode node in e.Node.Nodes)

{(node);

}.EndUpdate();

}

//показывает файлы в выбранной папкеvoid treeView1_OnAfterSelect(object sender, TreeViewEventArgs e)

{selectedNode = e.Node;fullPath = selectedNode.FullPath;

di = new DirectoryInfo(fullPath);= di;[] fiArray;[] diArray;

{= di.GetFiles();= di.GetDirectories();

}

{;

}.Items.Clear();(DirectoryInfo dirInfo in diArray)

{lvi = new ListViewItem(dirInfo.Name);.SubItems.Add("0");.SubItems.Add(dirInfo.LastWriteTime.ToString());.ImageIndex = 0;.Items.Add(lvi);

}(FileInfo fileInfo in fiArray)

{lvi = new ListViewItem(fileInfo.Name);.SubItems.Add(fileInfo.Length.ToString());.SubItems.Add(fileInfo.LastWriteTime.ToString());.Items.Add(lvi);

}

}

//показывает атрибуты файлаvoid listView1_OnItemActivate(object sender, EventArgs e)

{(ListViewItem lvi in listView1.SelectedItems)

{filesel = temp +"\+ lvi.Text;ff = new FileInfo(@filesel);res = new StringBuilder();.Security.AccessControl.FileSecurity fs = ff.GetAccessControl();(System.Security.AccessControl.FileSystemAccessRule permissions in fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))

{.AppendLine(String.Format("Пользователь: {0}", permissions.IdentityReference.Translate(typeof(System.Security.Principal.NTAccount)).Value));.AppendLine(String.Format("Права: {0}", permissions.FileSystemRights.ToString()));.AppendLine();

}.Text = res.ToString();

}

}static string Runscript(string scriptname)

{reader = new StreamReader(scriptname);scripttext = reader.ReadToEnd();runspace = RunspaceFactory.CreateRunspace(); // создание процесса.Open(); // открытие процессаpipeline = runspace.CreatePipeline(); // создание конвейера.Commands.AddScript(scripttext); //добавление сценария

pipeline.Commands.Add("Out-String"); // эта команда форматирует вывод. Без нее возвращаются реальные объекты.<PSObject> results = pipeline.Invoke(); // запуск сценария.Close(); // закрыте процессаstringBuilder = new StringBuilder(); // конвертация результата в одну строку с использованием StringBuilder;

foreach (PSObject obj in results)

{.AppendLine(obj.ToString());

}stringBuilder.ToString(); // возврат значения

}

//обновленияvoid button1_Click(object sender, EventArgs e)

{[] upd = Runscript("обновления.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < upd.Length; i++)

{[i] = upd[i].Replace("\r", String.Empty);(upd[i].Contains(" "))[i] = upd[i].Replace(" ", " ");(upd[i].Contains(" "))[i] = upd[i].Replace(" ", " ");[i] = upd[i].Replace("Date", "Дата установки");[i] = upd[i].Replace("Title", "Название");[i] = upd[i].Replace("Description ", "Описание");

}(int i = 0; i < upd.Length; i++)

{(upd[i].Contains("Дата установки"))

{[i + 1] = upd[i + 1] + upd[i + 2].Trim();[i + 2] = upd[i + 3] + upd[i + 4].Trim() + upd[i + 5].Trim();.Text = upd[i] + "\r\n" + upd[i + 1] + "\r\n" + upd[i + 2] + "\r\n";

}

}

}

//сетевые настройкиvoid button2_Click(object sender, EventArgs e)

{[] str = Runscript("сетевые_настройки.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < str.Length; i++)

{(str[i].Contains(" "))[i] = str[i].Replace(" ", " ");(str[i].Contains(" "))[i] = str[i].Replace(" ", " ");[i] = str[i].Replace("DHCPEnabled", "DHCP включен");[i] = str[i].Replace("True", "Да");[i] = str[i].Replace("False", "Нет");[i] = str[i].Replace("Index", "Номер");[i] = str[i].Replace("Description", "Описание");[i] = str[i].Replace("IPAddress", "IP адрес");[i] = str[i].Replace("ServiceName", "Имя сервиса");

}(int i = 0; i < str.Length; i++)

{.Text =textBox2.Text+str[i]+"\r\n";(str[i].Contains("Номер"))

{.Text = textBox2.Text + "\r\n";

}

}

}

//конфигурация компьютераvoid button3_Click(object sender, EventArgs e)

{

//processor and motherboard[] pr = Runscript("Proc.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < pr.Length; i++)

{(pr[i].Contains(" "))[i] = pr[i].Replace(" ", " ");(pr[i].Contains(" "))[i] = pr[i].Replace(" ", " ");(pr[i].Contains(" "))[i] = pr[i].Replace(" ", " ");[i] = pr[i].Replace("Name", "Название");[i] = pr[i].Replace("NumberOfCores", "Количество ядер");[i] = pr[i].Replace("Manufacturer", "Производитель");[i] = pr[i].Replace("SerialNumber", "Серийный номер");

}.Text = "1)Процессор" + "\r\n";.Text = textBox3.Text + " " + pr[0] + "\r\n" + " " + pr[1] + "\r\n";.Text = textBox3.Text + "\r\n" + "2)Материнская плата" + "\r\n";.Text = textBox3.Text + " " + pr[2] + "\r\n" + " " + pr[3] + "\r\n";

//ozu[] op = Runscript("op.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);.Text = textBox3.Text + "\r\n" + "3)Оперативная память" + "\r\n";.Text = textBox3.Text + " ";(op.Length > 2)

{(int i = 0; i < op.Length; i++)

{.Text = textBox3.Text + op[i] + " Gb ";

}

}{ textBox3.Text = textBox3.Text + op[0] + " Gb"; }.Text = textBox3.Text + "\r\n";

//disc[] cd = Runscript("Disc.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < cd.Length; i++)

{(cd[i].Contains(" "))[i] = cd[i].Replace(" ", " ");(cd[i].Contains(" "))[i] = cd[i].Replace(" ", " ");(cd[i].Contains(" "))[i] = cd[i].Replace(" ", " ");[i] = cd[i].Replace("Model", "Модель");[i] = cd[i].Replace("Size", "Объем");

}.Text = textBox3.Text + "\r\n" + "4)Жесткий диск" + "\r\n";(int i = 0; i < cd.Length; i=i+2)

{.Text = textBox3.Text + " " + cd[i] + "\r\n" + " " + cd[i+1]+ " kb" + "\r\n";

}

//cd-rom[] rom = Runscript("Drive.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < rom.Length; i++)

{(rom[i].Contains(" "))[i] = rom[i].Replace(" ", " ");(rom[i].Contains(" "))[i] = rom[i].Replace(" ", " ");(rom[i].Contains(" "))[i] = rom[i].Replace(" ", " ");[i] = rom[i].Replace("Caption", "Модель");

}.Text = textBox3.Text + "\r\n" + "5)CD привод" + "\r\n";(int i = 0; i < rom.Length; i++)

{.Text = textBox3.Text + " " + rom[i] + "\r\n";

}

//monitor[] mn = Runscript("Monitor.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < mn.Length; i++)

{(mn[i].Contains(" "))[i] = mn[i].Replace(" ", " ");(mn[i].Contains(" "))[i] = mn[i].Replace(" ", " ");(mn[i].Contains(" "))[i] = mn[i].Replace(" ", " ");[i] = mn[i].Replace("Name", "Название");[i] = mn[i].Replace("ScreenHeight", "Высота");[i] = mn[i].Replace("ScreenWidth", "Ширина");

}.Text = textBox3.Text + "\r\n" + "6)Монитор" + "\r\n";(int i = 0; i < mn.Length; i = i + 3)

{.Text = textBox3.Text + " " + mn[i] + "\r\n" + " " + mn[i + 1] + "\r\n" + " " + mn[i + 2] + "\r\n";

}

//video[] vd = Runscript("Video.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < vd.Length; i++)

{(vd[i].Contains(" "))[i] = vd[i].Replace(" ", " ");(vd[i].Contains(" "))[i] = vd[i].Replace(" ", " ");(vd[i].Contains(" "))[i] = vd[i].Replace(" ", " ");[i] = vd[i].Replace("Description", "Модель");[i] = vd[i].Replace("VideoModeDescription", "Видео характеристики");

}.Text = textBox3.Text + "\r\n" + "7)Видео карта" + "\r\n";(int i = 0; i < vd.Length; i = i + 2)

{.Text = textBox3.Text + " " + vd[i] + "\r\n" + " " + vd[i + 1] + "\r\n";

}

//audio[] au = Runscript("Audio.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);(int i = 0; i < au.Length; i++)

{(au[i].Contains(" "))[i] = au[i].Replace(" ", " ");(au[i].Contains(" "))[i] = au[i].Replace(" ", " ");(au[i].Contains(" "))[i] = au[i].Replace(" ", " ");[i] = au[i].Replace("Name", "Название");

}.Text = textBox3.Text + "\r\n" + "8)Звуковая карта" + "\r\n";.Text = textBox3.Text + " " + au[0] + "\r\n";

}

//файловая системаvoid button5_Click(object sender, EventArgs e)

{fsistem = new StringBuilder();(DriveInfo d in DriveInfo.GetDrives())

{(d.IsReady) fsistem.AppendLine(String.Format("Диск: {0}; метка тома: {1}; файловая система: {2}; тип: {3}; объем: {4} байт; свободно: {5} байт", d.Name, d.VolumeLabel, d.DriveFormat, d.DriveType, d.TotalSize, d.AvailableFreeSpace));

}.Show(fsistem.ToString());

}


}

}



Приложение 2. Скриншоты работы программы


Конфигурация компьютера.


Обновления Microsoft Windows.


Сетевые настройки.


Файловая система.

7.Библиографический список


1.Проскурин В. Г., Крутов С.В., Мацкевич И.В. «Защита в операционных системах». - М: Радио и связь. 2000.

.Румянцев П.В. «Работа с файлами в Win32 API» - М: Горячая Линия - Телеком, 2002.

.Msdn.microsoft.ru


МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Тульский государственный универс

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ