Help! Требуется написать Аналог Microsoft Security Centre Всем доброго всемени суток Накануне диплома появилась проблема с созданием программы. Вообще программа должна оценивать уровень безопасности на компе. Чем-то подобным является интегрированый в Windows Центр Безопасности , выводящий инфу о защищённости компьютера и показываюшего актуальность баз обновления. необходимо реализовать следующие шаги программа-клиент 1)ставится на комп 2)запускается 3)соединяется к серверу ( который я почти написал уже), на котором хранится инфа о существующем в его базе защитном ПО и его рейтинге 4)качает с сервера необходимые данные для проверки машины ( название + тип ПО ( антивирь,файрвол и тд) + путь в реестре + путь в реестре + на инфу о версии обновления ) на примере NOD Smart Security это что то вроде "NOD32 Smart Security" "Antivirus" HKEY_LOCAL_MACHINE\SOFTWARE\Eset\ESET Security\ HKEY_LOCAL_MACHINE\SOFTWARE\Eset\ESET Security\CurrentVersion\Info (тут находится ключ Scanner Version со значением "4055 (20090506)" ) 5) Из скачаного списка идёт проверка на наличие этого ПО на машине ( поиск по реестру ) 6) отправляет полученный список найденого ПО и версии его обновлений на сервер сервер принимает данные, сверяет какое на машине стоит ПО и как оно обновлено и сверяет со своей базой ( это уже частично написано ) С сервером я разберусь, а вот с клиентом получилась реальная запара. Программы-аналоги в сети есть, исходников их я не смог найти ( оно и понятно ) чем-то наподобие является программа Belarc Advisor . ХЕЛП! Языки - С++ либо C# п.с. может быть кто сможет посоветовать, где я могу найти отдельные части ( например реализацию поиска по реестру, скачку через инет с базы данных и тд )
Если говорить о языках то советую брать С# на нем быстрее можно написать то что нужно и у него есть хорошая система классов. Если бы было побольше времени можно было бы оформить как опенсорсный проект, тема интересная и нужная поэтому желающих помочь было бы достаточно. Жаль что я не прикасался к С# уже давно поэтому могу помочь только советами.
я честно говоря больше по базам как-то ) поэтому если честно вопрос не очень понимаю) пишу под дотнет ) если там можно на нескольких языках разные части реализовывать - тогда не принципиально)
Для поиска в реестре есть класс в .Net Microsoft.Win32.Registry (http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.aspx ) Для подключения клиента к серверу по tcp сокеты: http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx Для подключения к бд тебе нужно использовать ADO.NET (если ты писал сервер с бд, то скорее всего уже использовал ADO.NET) А вообще тебе нужно перед тем как начинать писать определиться с архитектурой приложений (разделить какие именно методы должны работать на сервере а какие на клиенте, построить объектную модель приложений (системы в целом)) Далее определить и описать протокол взаимодействия клиента с сервером (определить комманды используемые, ответы на эти комманды, действие по истечению таймаута и прочее), решить как вообще будет происходить взаимодействие - через сокеты, COM+, служба сообщений или прочее. Если нужна помощь в написании пиши в ЛС, обсудим. Могу кинуть хорошие книжки по дот нет.
Кстати, вспомнил что WMI имеет возможность выводить список установленных программ! Может тогда и не надо будет в реестре рыться. Я небольшую прогу на Питоне накатал, которая по сети отправляет кой-какую инфу о системе. Если интересно, могу выложить.
Кстати, можно использовать скрипты на MS PowerShell . Полная поддержка классов .Net, лёгкий доступ к WMI, готовые скрипты на многое ))
Да в любом случае - к WMI можно доступ иметь почти со всего что хочешь =) Включая C/C++/C# . Так что дерзай! Для примера: вот код получения информации о юзерах из WMI на Питоне: Code: def GetUsers(SID=1, Status=1): a = '' for c in wmi.Win32_Account(): m = a + c.Caption + ' ' a = m if SID: m = a + 'with ' + 'SID: ' + c.SID + '\n' a = m if Status: m = a + c.Status a = m m = a + "\n\n" a = '<USERS>' + m + '</USERS>' return a
Парни) возник по ходу создания вопрос следующий) Мучу поиск по реестру по следующему принципу есть в рестре директория HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ в не записи обо всех установленных прогах =) в поддиректориях есть ключ DisplayName где собсна и находится название установленной программы. База где собсна хранятся имена прог, которые надо найти на компе , стоит на мускуле Следовательно пользуюсь MySQL коннектором. Будьте добры подскажите, как в нём формировать запрос таким образом , чтоб он брал значение какого то атрибута из базы и присваивал его какой то переменной. сразу на примере скажу база называется TestBase таблица с именами проги выглядит примерно так - ID NAME 1 NOD32 и тд по аналогии я реализовал поиск сам. вовремя обхода он смотрит If DisplayName == X ( где Х - какая то переменная) , то выдаёт сообщение о том что такая прога найдена кто юзал MySQL коннектор , подскажите как сформировать запрос пользуясь коннектором и как сделать так, чтоб значение , которое вернёт запрос записывалось в переменную? Заранее большое спасибо) п.с. пишу на C# (это к вопросу о рприсвоении значения) формирование запроса думаю там не зависит от языка ( ? )
Последний вопрос отпал) я разобрался уже) остаалсь маленькая просьба, она требует просто нормальных знаний Си шарп))) не могу никак цикл организовать грамотно) кто может помочь с этим, отпишитесь пожалуйста) пока что прога работает тока с каким то определённым кортежом из БД ) подскажите как узнать число всех записей в таблице что то вроде COUNT чтоли)
благодарю за тему тех,ребят, кто отозвался =) Я уже сам со всем разобрался, реализовал и сдал =) тему можно удалять =)