Войти

Показать полную графическую версию : Утилита по диагностике и настройке XP Pro SP3 Ru


Страниц : [1] 2

saavaage
02-10-2010, 19:29
Это моя небольшая контрольная работа по теме "Введение в Autoit".
Прошло почти 2 месяца, как я начал осваивать этот замечательный язык (опыта программирования не было вообще).
Просьба ко всем, кто имеет немного свободного времени протестировать этот проект.
Меня прежде всего интересует 3 вещи:
1. замечания по стилю кода (где есть косяки)
2. оптимизация кода на предмет увеличения производительности (долго грузится и много ест памяти)
3. оптимальность использования тех или иных инструментов (на предмет сокращения кода.
Внимание!! Утилита создавалась для XP Pro SP3 Ru 32 bit и тестировалась только в ней!!!

Огромное спасибо всем, кто за эти 2 месяца терпел мои бесконечные вопросы и все-таки находил время на них отвечать.

Особая благодарность (в алфавитном порядке):
amel27
Creat0R
FlatX007
madmasles
Yashied
а так же всем тем форумчанам, чьими наработками я активно пользовался.

Отдельная благодарность за дельные советы по дополнительному функционалу и детальный тестинг:
stalinit078

Спасибо за помощь!

Утилита: http://ifolder.ru/19935348
Исходники: http://ifolder.ru/19935537

stalinit078
02-10-2010, 23:29
saavaage,
Можете выложить исходники на другой файлообменник (например rghost)?

saavaage
03-10-2010, 01:28
stalinit078, в шапке
Обновил исходники и утилиту. Устранен баг с вкладкой "Software" ссылки - в шапке

FlatX007
03-10-2010, 14:18
#include <Encoding.au3>

MsgBox(0, Default, _GetServicesStatEx())

Func _GetServicesStatEx()
Local $sStrRep[2], $StdoutRead[2]
Local Const $STDOUT_CHILD = 0x2 ; Constants.au3

$hIPconfig1_1 = Run('sc query wuauserv', '', @SW_HIDE, $STDOUT_CHILD)
$hIPconfig1_2 = Run('sc qc wuauserv', '', @SW_HIDE, $STDOUT_CHILD)

While 1
$StdoutRead[0] &= StdoutRead($hIPconfig1_1)
$StdoutRead[1] &= StdoutRead($hIPconfig1_2)
If @error Then ExitLoop
Sleep(10)
WEnd

$sStrRep[0] = StringRegExpReplace($StdoutRead[0], "(?si).*STATE\D*(\d+).*", '\1')
$sStrRep[1] = StringRegExpReplace($StdoutRead[1], "(?si).*START_TYPE\D*(\d+).*", '\1')

If Not IsNumber($sStrRep[0]) Then $sStrRep[0] = StringRegExpReplace(_Encoding_CyrillicTo1251($StdoutRead[0]), "(?si).*Состояние\D*(\d+).*", '\1')
If Not IsNumber($sStrRep[1]) Then $sStrRep[1] = StringRegExpReplace(_Encoding_CyrillicTo1251($StdoutRead[1]), "(?si).*Тип_запуска\D*(\d+).*", '\1')

Return $sStrRep[0] & '|' & $sStrRep[1]
EndFunc

saavaage
04-10-2010, 12:20
FlatX007, насколько я понял, это и есть элегантный способ заставить работать и русскую версию sc (в win7)? . Надо будет таким образом "причесать" весь код. Беру на заметку. Как дойду до финнального релиза (сейчас идет тестирование на форуме), так сделаю везде, где можно.
Спасибо.

FlatX007
04-10-2010, 12:37
Если у вас работает эта функция, значит всё нормально .. тк она у меня работает тоже - я ведь тестировал как никак.

saavaage
04-10-2010, 21:53
Поправил код (пока без учета замечаний FlatX007)
Изменения:
1. Dialup - сделано автоматическое закрытие после выполнения автоматической настройки
2. Pagefile - устранен баг с 0 размером в случае выбора пункта в настройках Виртуальной памяти "Размер по выбору системы"
3. Сделал недоступными для корректировки все окна вывода информации (за исключением изменяемой)
4. Firewall - увеличил интервал между действиями по автоматической настройке. Возможно теперь проблем с зависанием не будет (не тестил)
5. Перевел на русский названия полей на вкладке Network
6. Расширил базу антивирусов

Ссылки в шапке обновлены

saavaage
05-10-2010, 12:55
Сегодня вечером будет свежий код. Планирую исправить баг с антивирусом и сделать прочие мелкие изменения.

saavaage
05-10-2010, 16:36
Выкладываю новую версию утилиты.
Изменения:
1. Устранен баг с определением антивирусом
2. устранен баг с "-1" при определении внешнего ip
3. устранен баг с вываливанием утилиты при запуске (ошибка Pozia) - спасибо madmasles и Yashied за помощь и науку
4. Незначительные изменения:
- теперь буквы дисков привязаны к текущим разделам системы (вкладка Folders - pagefile) - спасибо madmasles за предложение
- по клику на лого, автоматический переход в ветку форума
- небольшие улучшения кода

Ссылки обновлены - см. в шапке

База слов для определения антивируса:
'Antivir', 'Security Suite', 'ESET Security', 'COMODO Internet Security', 'AVG Free', 'Avira AntiVir', 'ESET Smart Security', 'ESET NOD32', 'KIS', 'Kaspersky Internet Security', 'Symantec Endpoint Protection', 'BitDefender Total Security', 'Norton 360', 'Security Space', 'Doctor Web', 'Vba32', 'Panda Global Protection', 'McAfee', 'GData', 'Microsoft Security Essentials'

Тестим, пожалуйста

На всякий случай, дублирую модуль по определению софта, установленного в системе (см. аттач). Если не сложно, отпишитесь как там называются Ваши антивирусы для внесения новых слов в базу. Тем, кто качал исходники, качать модуль не надо - он уже есть в архиве.

saavaage
05-10-2010, 17:22
Нашел небольшой баг с функцией "Обновить" вкладки Folders (исчезали буквы разделов из выпадающих списков. Поправил, ссылки перезалил.

Извините, спешка.

madmasles
05-10-2010, 18:07
saavaage,
Так у меня на Windows XP SP3 определяет антивирус:$Output = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL", 48)

If IsObj($colItems) Then
For $objItem In $colItems
$Output &= "CompanyName: " & $objItem.CompanyName & @CRLF
$Output &= "DisplayName: " & $objItem.DisplayName & @CRLF
$Output &= "VersionNumber: " & $objItem.VersionNumber & @CRLF
$Output &= "productUpToDate: " & $objItem.productUpToDate & @CRLF
MsgBox(0, "WMI Output", $Output)
$Output = ""
Next
Else
MsgBox(0, "WMI Output", "No WMI Objects Found for class: AntiVirusProduct")
EndIf
А так - файервол:$Output = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM FireWallProduct", "WQL", 48)

If IsObj($colItems) Then
For $objItem In $colItems
$Output &= "CompanyName: " & $objItem.CompanyName & @CRLF
$Output &= "DisplayName: " & $objItem.DisplayName & @CRLF
$Output &= "VersionNumber: " & $objItem.VersionNumber & @CRLF
MsgBox(0, "WMI Output", $Output)
$Output = ""
Next
Else
MsgBox(0, "WMI Output", "No WMI Objects Found for class: FireWallProduct")
EndIf
Источник: WMI - как узнать какой антивирус на компе (http://forum.oszone.net/post-1145625.html#post1145625)/
У меня ESET Smart Security 3.0, с другими не пробовал.

saavaage
05-10-2010, 18:22
madmasles, смотрел эту ветку, но, нет уверенности, что инфа будет по всем антивирусам, поэтому и решил делать базу названий

файрволл меня только родной XP-шный интересовал. Остальные - личное дело каждого.
Кстати, ваш ESET Smart Security 3.0 » определился последней версией?

В принципе, можно будет попробовать на стадии финала. Закину-ка я Ваше предложение в todo (по антивирусам и файрволлам).
Места на форме не хватает (промахнулся с размером)

madmasles
05-10-2010, 18:31
определился последней версией? »
Определился.
смотрел эту ветку, но, нет уверенности, что инфа будет по всем антивирусам, поэтому и решил делать базу названий »
А что Вам мешает сделать отдельный модуль, такой, как Software.exe, и люди протестируют, определяются другие антивирусы или нет. :)

saavaage
05-10-2010, 18:57
madmasles, прекрасная идея. Решил так - дорабатываем эту версию до финала и перед финалом, предложу поменять алгоритм. Сейчас главное закрыть глюки. Как только не будет багов, сделаю обязательно.

PS Как думаете, стоит вводить модуль проверки и изменения разрешения экрана (окошко маленькое и на больших расширениях, боюсь, не будет читаться)

madmasles
05-10-2010, 19:34
стоит вводить модуль проверки и изменения разрешения экрана »Проверить до завтра на большом разрешении не могу. :(

saavaage
05-10-2010, 19:36
madmasles, нужны ли какие-нить дополнительные библиотеки к скриптам топика 11?

FlatX007
05-10-2010, 19:40
нужны ли какие-нить дополнительные библиотеки к скриптам топика 11 »

Не нужны это же COM.

saavaage
05-10-2010, 19:49
FlatX007, у меня не пашет. Ошибка:
Variable must be of type "Object".:
$colItems = $objWMIService.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL", 48)
$colItems = $objWMIService^ ERROR

Как это прикрутить к autoit? В справке написано, но по английски. Прийдется день убить на просвещение...

Iska
05-10-2010, 23:04
FlatX007, у меня не пашет. Ошибка…[/quote]
Может у Вас в hosts отсутствует определение localhost? Попробуйте вместо:
$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
пользовать непосредственно:
$objWMIService = ObjGet("winmgmts:\\.\root\SecurityCenter")

[q=saavaage]…нет уверенности, что инфа будет по всем антивирусам…»
Основная масса производителей за восемь лет научилась сообщать Windows о своих продуктах. Насколько я пробовал — для «AntiVirusProduct» сообщают о себе продукты Symantec и Avast, для «FireWallProduct» могу подтвердить только про ZoneAlarm.

saavaage
05-10-2010, 23:08
Iska, к сожалению, не помогло. Та же самая ошибка




© OSzone.net 2001-2012