Сканер безопасности операционных систем
Получение конфигурации компьютера. Установка обновления Microsoft Windows. Просмотр файловой системы компьютера и информация о ней. Алгоритм запуска программы PowerShell с заданными скриптами из Visual C#. Стандартные утилиты управления Microsoft Windows.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.05.2013 |
Размер файла | 703,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
“Тульский государственный университет”
Кафедра ЭВМ
Пояснительная записка к курсовой работе по дисциплине
«БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ»
Выполнил студент группы 230791Овсянкин Н.С.
Руководитель: доцент кафедры ЭВМ, к.т.н.
Новиков А.С.
Тула 2012 г.
УТВЕРЖДАЮ
Заведующий кафедрой
………………………………………..
"………" …………………….20…..Г.
З А Д А Н И Е
К курсовой работе по дисциплине
«БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ»
студенту группы 230791 Овсянкина Никиты Сергеевича
Тема проекта: “Сканер безопасности ОС”
Входные данные:
1. Установленные обновления Microsoft Windows.
2. Сетевые настройки (TCP IP и т.д.)Открытые ресурсы (совместно используемые ресурсы, разделяемые ресурсы NetBIOS (NetBIOS Share)
3. Файловая система (Тип файловой системы, определить права на доступ к особо важным файлам, разрешения на основные файлы и папки).
4. Получение конфигурации компьютера.
Задание получил:
График выполнения проекта
выдача задания "……" ………………….20….г.
срок предоставления готового задания "……." …………….20……г.
Замечания консультанта …………………………………………………
……………………………………………………………………………
………………………………………………………………………………
К защите. Консультант (руководитель) …………………………………
"……" ………………….20…..г.
1. Введение
Курсовая работа по безопасности операционных систем выполнена для изучения устройства, принципов организации и взаимодействия подсистем защиты в ОС различной архитектуры, изучения защищенности заданных конфигураций различных операционных систем и приобретения навыков построения комплексной системы безопасности в заданной конфигурации операционной системы.
Порядок функционирования систем безопасности ОС в общем случае определяется большим числом настроек параметров и элементов ее структуры, которые при инсталляции ОС по умолчанию устанавливаются таким образом, что решению задачи защиты информации в ОС отводится второстепенная роль. Данное обстоятельство вынуждает администратора ОС самостоятельно выбрать тот или иной путь решения задачи защиты информации.
2. Теоретическая справка
2.1 Специальные классы WMI
Windows 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
Windows PowerShell -- расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован в сентябре 2003 года под кодовым названием Monad. Версия 1.0 выпущена в 2006 году и сейчас доступна для Windows XP с пакетом обновления 2 - 3, Windows Server 2003, Windows Vista, и встроена в Windows Server 2008 как необязательный компонент.
Windows PowerShell 2.0 был выпущен в составе Windows 7 и Windows Server 2008 R2 как неотъемлемый компонент системы. Кроме того, вторая версия доступна и для других систем, таких как Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1 и Windows Server 2008.
Windows PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные команды командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.
Эти административные задачи обычно выполняются с помощью командлетов (в оригинале cmdlets), которые являются специализированными классами .NET. Пользователь может комбинировать их в скриптах (сценариях), используя различные конструкции, утилиты командной строки и обращения к обычным классам .NET, объектам WMI или COM. Кроме того, можно использовать различные хранилища данных, такие как файловая система или реестр Windows, которые предоставляются PowerShell посредством поставщиков (англ. providers).
Windows 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.
2. Сетевые настройки (TCP IP и т.д.)Открытые ресурсы (совместно используемые ресурсы, разделяемые ресурсы NetBIOS (NetBIOS Share)
3. Файловая система (Тип файловой системы, определить права на доступ к особо важным файлам, разрешения на основные файлы и папки).
4. Получение конфигурации компьютера.
Выполнение поставленной задачи производилось на базе операционной системы 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. Общий вид такого скрипта следующий:
Get-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) |
Select-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
4.1) Вызвать метод Open у экземпляра класса Runspace;
5) Создать конвейер
5.1) Создать экземпляр класса Pipeline;
5.2) Для этого вызвать метод CreatePipeline класса Runspace;
5.3) Присвоить экземпляту класса Pipeline созданного в п 5.1 значение фунекции вызываемой в п 5.2;
6) Добавить сценария
6.1) Выполнить команду AddScript экземпляра обьекта Pipeline созданого в п5.1;
7) Запуск сценария
7.1) Создать экземпляр класса Collection;
7.2) Вызвать метод Invoke класса Pipeline;
7.3) Присвить экземпляр класса Collection, вызванного в п7.1 значение метода Invoke(п.7.3);
8) Закрыте процесса
8.1) Вызвать метод close у экземпляра класса Runspace;
После п.8 алгоритм окончен для вывода результата в одну строку для этого необходимо:
9) Конвертация результата в одну строку с использованием StringBuilder
9.1) Cоздать экземпляр класса StringBuilder;
9.2) Для каждого обьекта в Collection выполнить метод AppendLine экземпляра класса StringBuilder у качестве параметра указать обьекта в Collection;
3.4.3 Пример алгоритма реализованного в среде Visual Studio 2008
Runspace runspace = RunspaceFactory.CreateRunspace(); // создание процесса
runspace.Open(); // открытие процесса
Pipeline pipeline = runspace.CreatePipeline(); // создание конвейера
pipeline.Commands.AddScript(scriptText); //добавление сценария
pipeline.Commands.Add("Out-String"); // эта команда форматирует вывод. Без нее возвращаются реальные объекты.
Collection<PSObject> results = pipeline.Invoke(); // запуск сценария
runspace.Close(); // закрыте процесса
StringBuilder stringBuilder = new StringBuilder(); // конвертация результата в одну строку с использованием StringBuilder;
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString(); // возврат значения
microsoft windows обновление файловый
4. Структура программы
Программа состоит из одного главного файла Form1.cs. В нем реализованы все необходимые алгоритмы для получения информации по каждому из заданий.
4.1 Файл Form1.cs:
В первую очередь этот файл содержит метод для выполнения скриптов для PowerShell: Runscript . С помощью него выполняются все необходимые скрипты в программе.
public static string Runscript(string scriptname) - функция выполняющая скрипт PowerShell из файла. В качестве аргумента принимает путь в файлу скрипта. Возвращает результаты выполнения скрипта в виде строки.
Также в файле находятся следующие функции:
4.1.1 Public void DriveTreeInit()
В самом начале своей работы этот метод получает список логических дисковых устройств, установленных в системе, и сохраняет его в массиве drivesArray.
Далее метод DriveTreeInit вызывает метод treeView1.BeginUpdate. Этот метод временно блокирует перерисовку окна дерева до тех пор, пока не будет вызван метод treeView1.EndUpdate. Пара этих методов используется в том случае, когда нужно добавить, удалить или изменить большое количество элементов дерева. Если не заблокировать перерисовку окна, на обновление дерева уйдет слишком много времени.
В классе TreeView определено свойство Nodes, хранящее все узлы дерева. Перед тем как приступить к заполнению дерева, метод DriveTreeInit удаляет все узлы, вызывая для этого метод treeView1.Nodes.Clear.
Заполнение дерева происходит в цикле:
foreach(string s in drivesArray)
{
TreeNode drive = new TreeNode(s, 0, 0);
treeView1.Nodes.Add(drive);
GetDirs(drive);
}
Далее вызывается метод GetDirs, добавляющий в дерево список содержимого корневого каталога текущего дискового устройства.
4.1.2 Public void GetDirs (TreeNode node)
Метод GetDirs получает в качестве параметра ссылку на узел дерева, который требуется наполнить списком имен каталогов и файлов.
Первым делом метод GetDirs удаляет все элементы из текущего узла, вызывая для этого метод node.Nodes.Clear.
Далее метод переписывает в переменную fullPath типа string полный путь node.FullPath к узлу дерева. Эта строка получается объединением (конкатенацией) текстовых строк всех родительских узлов. Если корневой узел хранит текстовую строку обозначения логического диска, то после выполнения этой процедуры в переменной fullPath будет храниться полный путь к файлу или каталогу.
Далее для получения содержимого каталога, на который ссылается переменная fullPath, мы используем рассмотренный ранее метод GetDirectories. При возникновении исключения программа просто возвращает управление, не выполняя над узлом дерева никаких функций.
В том случае если содержимое каталога было успешно получено, оно сохраняется в массиве diArray.
Далее содержимое массива diArray используется для заполнения узла дерева содержимым каталога:
foreach (DirectoryInfo dirinfo in diArray)
{
TreeNode dir = new TreeNode(dirinfo.Name, 0, 0);
node.Nodes.Add(dir);
}
Здесь в цикле создаются объекты класса TreeNode, т.е. узел дерева. В качестве первого параметра конструктору этого класса передается имя текущего элемента (каталога или файла) обрабатываемого каталога. Эти объекты добавляются в дерево рассмотренным ранее методом node.Nodes.Add.
4.1.3 private void treeView1_OnBeforeExpand(object sender, TreeViewCancelEventArgs e)
Событие BeforeExpand возникает при попытке пользователя раскрыть узел дерева. В этом случае наш обработчик заполняет открываемый узел при помощи рассмотренного ранее метода GetDirs. Ссылка на узел извлекается из поляe.Node.Nodes, передаваемого обработчику событий в качестве параметра.
4.1.4 private void treeView1_OnAfterSelect(object sender, TreeViewEventArgs e)
Прежде всего, метод извлекает ссылку на узел дерева, выделенный пользователем, из свойства Node параметра обработчика событий treeView1_OnAfterSelect.
TreeNode selectedNode = e.Node;
Далее, полный путь к выделенному узлу записывается в поле fullPath класса :
fullPath = selectedNode.FullPath;
Так как наше дерево содержит только обозначения дисков и каталогов, то это будет путь либо к корневому каталогу диска, либо к одному из подкаталогов.
Далее мы создаем объект класса DirectoryInfo и получаем списки всех файлов и каталогов, располагающихся в каталоге, выделенном пользователем в дереве:
DirectoryInfo di = new DirectoryInfo(fullPath);
FileInfo[] fiArray;
DirectoryInfo[] diArray;
Try
{
fiArray = di.GetFiles();
diArray = di.GetDirectories();
}
Catch
{
return;
}
Для выполнения этих операций применяются методы GetFiles и GetDirectories. Перечень файлов обработчик события сохраняет в массиве fiArray, а перечень каталогов -- в массиве diArray.
Вооружившись перечнями файлов и каталогов, мы приступим к добавлению элементов к нашему списку ListView, очистив предварительно содержимое списка методом Clear:
listView1.Items.Clear();
Наполнение списка именами каталогов выполняется в цикле foreach:
foreach(DirectoryInfo dirInfo in diArray)
{
ListViewItem lvi = new ListViewItem(dirInfo.Name);
lvi.SubItems.Add("0");
lvi.SubItems.Add(dirInfo.LastWriteTime.ToString());
lvi.ImageIndex = 0;
listView1.Items.Add(lvi);
}
4.1.5 private void listView1_OnItemActivate(object sender, EventArgs e)
Предусмотрев обработчик события ItemActivate к элементу управления ListView, мы сможем отображать в окне текстового редактора права на доступ к файлам, отображаемых в правом верхнем фрейме. Это событие возникает, когда пользователь дважды щелкает строку в окне списка ListView.
4.1.6 private 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.8 private 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;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DriveTreeInit();
}
DirectoryInfo temp;
public void DriveTreeInit()
{
string[] drivesArray = Directory.GetLogicalDrives();
treeView1.BeginUpdate();
treeView1.Nodes.Clear();
foreach (string s in drivesArray)
{
TreeNode drive = new TreeNode(s, 0, 0);
treeView1.Nodes.Add(drive);
GetDirs(drive);
}
treeView1.EndUpdate();
}
/// Получение списка каталогов
public void GetDirs(TreeNode node)
{
DirectoryInfo[] diArray;
node.Nodes.Clear();
string fullPath = node.FullPath;
DirectoryInfo di = new DirectoryInfo(fullPath);
try
{
diArray = di.GetDirectories();
}
catch
{
return;
}
foreach (DirectoryInfo dirinfo in diArray)
{
TreeNode dir = new TreeNode(dirinfo.Name, 0, 0);
node.Nodes.Add(dir);
}
}
private void treeView1_OnBeforeExpand(object sender, TreeViewCancelEventArgs e)
{
treeView1.BeginUpdate();
foreach (TreeNode node in e.Node.Nodes)
{
GetDirs(node);
}
treeView1.EndUpdate();
}
//показывает файлы в выбранной папке
private void treeView1_OnAfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode selectedNode = e.Node;
string fullPath = selectedNode.FullPath;
DirectoryInfo di = new DirectoryInfo(fullPath);
temp = di;
FileInfo[] fiArray;
DirectoryInfo[] diArray;
try
{
fiArray = di.GetFiles();
diArray = di.GetDirectories();
}
catch
{
return;
}
listView1.Items.Clear();
foreach (DirectoryInfo dirInfo in diArray)
{
ListViewItem lvi = new ListViewItem(dirInfo.Name);
lvi.SubItems.Add("0");
lvi.SubItems.Add(dirInfo.LastWriteTime.ToString());
lvi.ImageIndex = 0;
listView1.Items.Add(lvi);
}
foreach (FileInfo fileInfo in fiArray)
{
ListViewItem lvi = new ListViewItem(fileInfo.Name);
lvi.SubItems.Add(fileInfo.Length.ToString());
lvi.SubItems.Add(fileInfo.LastWriteTime.ToString());
listView1.Items.Add(lvi);
}
}
//показывает атрибуты файла
private void listView1_OnItemActivate(object sender, EventArgs e)
{
foreach (ListViewItem lvi in listView1.SelectedItems)
{
string filesel = temp +"\\"+ lvi.Text;
FileInfo ff = new FileInfo(@filesel);
StringBuilder res = new StringBuilder();
System.Security.AccessControl.FileSecurity fs = ff.GetAccessControl();
foreach (System.Security.AccessControl.FileSystemAccessRule permissions in fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
res.AppendLine(String.Format("Пользователь: {0}", permissions.IdentityReference.Translate(typeof(System.Security.Principal.NTAccount)).Value));
res.AppendLine(String.Format("Права: {0}", permissions.FileSystemRights.ToString()));
res.AppendLine();
}
richTextBox1.Text = res.ToString();
}
}
public static string Runscript(string scriptname)
{
StreamReader reader = new StreamReader(scriptname);
string scripttext = reader.ReadToEnd();
Runspace runspace = RunspaceFactory.CreateRunspace(); // создание процесса
runspace.Open(); // открытие процесса
Pipeline pipeline = runspace.CreatePipeline(); // создание конвейера
pipeline.Commands.AddScript(scripttext); //добавление сценария
pipeline.Commands.Add("Out-String"); // эта команда форматирует вывод. Без нее возвращаются реальные объекты.
Collection<PSObject> results = pipeline.Invoke(); // запуск сценария
runspace.Close(); // закрыте процесса
StringBuilder stringBuilder = new StringBuilder(); // конвертация результата в одну строку с использованием StringBuilder;
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString(); // возврат значения
}
//обновления
private void button1_Click(object sender, EventArgs e)
{
string[] upd = Runscript("обновления.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < upd.Length; i++)
{
upd[i] = upd[i].Replace("\r", String.Empty);
if (upd[i].Contains(" "))
upd[i] = upd[i].Replace(" ", " ");
if (upd[i].Contains(" "))
upd[i] = upd[i].Replace(" ", " ");
upd[i] = upd[i].Replace("Date", "Дата установки");
upd[i] = upd[i].Replace("Title", "Название");
upd[i] = upd[i].Replace("Description ", "Описание");
}
for (int i = 0; i < upd.Length; i++)
{
if (upd[i].Contains("Дата установки"))
{
upd[i + 1] = upd[i + 1] + upd[i + 2].Trim();
upd[i + 2] = upd[i + 3] + upd[i + 4].Trim() + upd[i + 5].Trim();
textBox1.Text = upd[i] + "\r\n" + upd[i + 1] + "\r\n" + upd[i + 2] + "\r\n";
}
}
}
//сетевые настройки
private void button2_Click(object sender, EventArgs e)
{
string[] str = Runscript("сетевые_настройки.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < str.Length; i++)
{
if (str[i].Contains(" "))
str[i] = str[i].Replace(" ", " ");
if (str[i].Contains(" "))
str[i] = str[i].Replace(" ", " ");
str[i] = str[i].Replace("DHCPEnabled", "DHCP включен");
str[i] = str[i].Replace("True", "Да");
str[i] = str[i].Replace("False", "Нет");
str[i] = str[i].Replace("Index", "Номер");
str[i] = str[i].Replace("Description", "Описание");
str[i] = str[i].Replace("IPAddress", "IP адрес");
str[i] = str[i].Replace("ServiceName", "Имя сервиса");
}
for (int i = 0; i < str.Length; i++)
{
textBox2.Text =textBox2.Text+str[i]+"\r\n";
if (str[i].Contains("Номер"))
{
textBox2.Text = textBox2.Text + "\r\n";
}
}
}
//конфигурация компьютера
private void button3_Click(object sender, EventArgs e)
{
//processor and motherboard
string[] pr = Runscript("Proc.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < pr.Length; i++)
{
if (pr[i].Contains(" "))
pr[i] = pr[i].Replace(" ", " ");
if (pr[i].Contains(" "))
pr[i] = pr[i].Replace(" ", " ");
if (pr[i].Contains(" "))
pr[i] = pr[i].Replace(" ", " ");
pr[i] = pr[i].Replace("Name", "Название");
pr[i] = pr[i].Replace("NumberOfCores", "Количество ядер");
pr[i] = pr[i].Replace("Manufacturer", "Производитель");
pr[i] = pr[i].Replace("SerialNumber", "Серийный номер");
}
textBox3.Text = "1)Процессор" + "\r\n";
textBox3.Text = textBox3.Text + " " + pr[0] + "\r\n" + " " + pr[1] + "\r\n";
textBox3.Text = textBox3.Text + "\r\n" + "2)Материнская плата" + "\r\n";
textBox3.Text = textBox3.Text + " " + pr[2] + "\r\n" + " " + pr[3] + "\r\n";
//ozu
string[] op = Runscript("op.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
textBox3.Text = textBox3.Text + "\r\n" + "3)Оперативная память" + "\r\n";
textBox3.Text = textBox3.Text + " ";
if (op.Length > 2)
{
for (int i = 0; i < op.Length; i++)
{
textBox3.Text = textBox3.Text + op[i] + " Gb ";
}
}
else { textBox3.Text = textBox3.Text + op[0] + " Gb"; }
textBox3.Text = textBox3.Text + "\r\n";
//disc
string[] cd = Runscript("Disc.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < cd.Length; i++)
{
if (cd[i].Contains(" "))
cd[i] = cd[i].Replace(" ", " ");
if (cd[i].Contains(" "))
cd[i] = cd[i].Replace(" ", " ");
if (cd[i].Contains(" "))
cd[i] = cd[i].Replace(" ", " ");
cd[i] = cd[i].Replace("Model", "Модель");
cd[i] = cd[i].Replace("Size", "Объем");
}
textBox3.Text = textBox3.Text + "\r\n" + "4)Жесткий диск" + "\r\n";
for (int i = 0; i < cd.Length; i=i+2)
{
textBox3.Text = textBox3.Text + " " + cd[i] + "\r\n" + " " + cd[i+1]+ " kb" + "\r\n";
}
//cd-rom
string[] rom = Runscript("Drive.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < rom.Length; i++)
{
if (rom[i].Contains(" "))
rom[i] = rom[i].Replace(" ", " ");
if (rom[i].Contains(" "))
rom[i] = rom[i].Replace(" ", " ");
if (rom[i].Contains(" "))
rom[i] = rom[i].Replace(" ", " ");
rom[i] = rom[i].Replace("Caption", "Модель");
}
textBox3.Text = textBox3.Text + "\r\n" + "5)CD привод" + "\r\n";
for (int i = 0; i < rom.Length; i++)
{
textBox3.Text = textBox3.Text + " " + rom[i] + "\r\n";
}
//monitor
string[] mn = Runscript("Monitor.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < mn.Length; i++)
{
if (mn[i].Contains(" "))
mn[i] = mn[i].Replace(" ", " ");
if (mn[i].Contains(" "))
mn[i] = mn[i].Replace(" ", " ");
if (mn[i].Contains(" "))
mn[i] = mn[i].Replace(" ", " ");
mn[i] = mn[i].Replace("Name", "Название");
mn[i] = mn[i].Replace("ScreenHeight", "Высота");
mn[i] = mn[i].Replace("ScreenWidth", "Ширина");
}
textBox3.Text = textBox3.Text + "\r\n" + "6)Монитор" + "\r\n";
for (int i = 0; i < mn.Length; i = i + 3)
{
textBox3.Text = textBox3.Text + " " + mn[i] + "\r\n" + " " + mn[i + 1] + "\r\n" + " " + mn[i + 2] + "\r\n";
}
//video
string[] vd = Runscript("Video.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < vd.Length; i++)
{
if (vd[i].Contains(" "))
vd[i] = vd[i].Replace(" ", " ");
if (vd[i].Contains(" "))
vd[i] = vd[i].Replace(" ", " ");
if (vd[i].Contains(" "))
vd[i] = vd[i].Replace(" ", " ");
vd[i] = vd[i].Replace("Description", "Модель");
vd[i] = vd[i].Replace("VideoModeDescription", "Видео характеристики");
}
textBox3.Text = textBox3.Text + "\r\n" + "7)Видео карта" + "\r\n";
for (int i = 0; i < vd.Length; i = i + 2)
{
textBox3.Text = textBox3.Text + " " + vd[i] + "\r\n" + " " + vd[i + 1] + "\r\n";
}
//audio
string[] au = Runscript("Audio.ps1").Trim().Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < au.Length; i++)
{
if (au[i].Contains(" "))
au[i] = au[i].Replace(" ", " ");
if (au[i].Contains(" "))
au[i] = au[i].Replace(" ", " ");
if (au[i].Contains(" "))
au[i] = au[i].Replace(" ", " ");
au[i] = au[i].Replace("Name", "Название");
}
textBox3.Text = textBox3.Text + "\r\n" + "8)Звуковая карта" + "\r\n";
textBox3.Text = textBox3.Text + " " + au[0] + "\r\n";
}
//файловая система
private void button5_Click(object sender, EventArgs e)
{
StringBuilder fsistem = new StringBuilder();
foreach (DriveInfo d in DriveInfo.GetDrives())
{
if (d.IsReady) fsistem.AppendLine(String.Format("Диск: {0}; метка тома: {1}; файловая система: {2}; тип: {3}; объем: {4} байт; свободно: {5} байт", d.Name, d.VolumeLabel, d.DriveFormat, d.DriveType, d.TotalSize, d.AvailableFreeSpace));
}
MessageBox.Show(fsistem.ToString());
}
}
}
Приложение 2. Скриншоты работы программы
Конфигурация компьютера.
Обновления Microsoft Windows.
Сетевые настройки.
Файловая система.
7. Библиографический список
1. Проскурин В. Г., Крутов С.В., Мацкевич И.В. «Защита в операционных системах». - М: Радио и связь. 2000.
2. Румянцев П.В. «Работа с файлами в Win32 API» - М: Горячая Линия - Телеком, 2002.
3. Msdn.microsoft.ru
Размещено на Allbest.ru
Подобные документы
Компьютерные программы, обеспечивающие управление аппаратными средствами компьютера. Операционные системы Microsoft Corporation. Прикладные программы, утилиты. Простейшие функции операционной системы. Линейка Microsoft Windows для домашнего использования.
презентация [947,8 K], добавлен 01.10.2012Знакомство с техническими характеристиками персонального компьютера. Установка операционной системы и драйверов Windows 7. Способы чистки Windows XP Professional SP3. Методы восстановления операционной системы. Выполнение установки Microsoft Office 2010.
отчет по практике [5,6 M], добавлен 22.09.2014Центр обеспечения безопасности (Windows Security Center) в операционной системе Windows XP SP2 и угрозы компьютерной безопасности. Обеспечение безопасности хранения данных в ОС Microsoft. Алгоритм создания отказоустойчивых томов для хранения данных.
курсовая работа [507,1 K], добавлен 13.11.2011Прикладные программы и утилиты. Простейшие функции операционной системы. История разработки корпорацией Microsoft Corporation графической операционной оболочки Windows. Версия семейства сетевых ОС Windows NT (Millennium Edition, 2000, XP, Vista, Seven)
презентация [965,2 K], добавлен 12.10.2013Исследование эволюции операционных систем для персонального компьютера компании Microsoft. Характеристика основных функциональных особенностей Windows XP, Windows Vista и Linux. Достоинства и недостатки операционных систем, произведенных компанией Apple.
реферат [36,8 K], добавлен 10.04.2018Понятия вычислительной системы, ее аппаратное обеспечение. Конфигурация и устройство компьютера. Элементы управления операционной системы Windows ХР. Стандартные и служебные приложения ОС. Архитектура фон Нейман. Работа в программе Microsoft Excel.
шпаргалка [47,0 K], добавлен 29.12.2010Основные выпуски (редакции) операционных систем Windows Vista и Windows Seven, их недостатки и преимущества. История создания, совместимость приложений с операционными системами. Новшества, которые принесла в мир компьютерных технологий каждая из систем.
реферат [66,3 K], добавлен 17.02.2011Основные сходства и отличия операционных систем Microsoft Windows и GNU/Linux: конфигурации, цена и широта технической поддержки; оценка стоимости владения и статистика использования на настольных компьютерах; простота инсталляции и наличие драйверов.
курсовая работа [294,9 K], добавлен 12.05.2011Использование операционных систем Microsoft Windows. Разработка операционной системы Windows 1.0. Возможности и характеристика последующих версий. Выпуск пользовательских операционных систем компании, доработки и нововведения, версии Windows XP и Vista.
реферат [23,3 K], добавлен 10.01.2012Основные моменты истории операционных систем, связывающих аппаратное обеспечение и прикладные программы. Характеристика операционной системы Microsoft Windows Seven, анализ операционной системы Linux. Преимущества и недостатки каждой операционной системы.
курсовая работа [63,0 K], добавлен 07.05.2011