Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Утилита по диагностике и настройке XP Pro SP3 Ru (http://forum.oszone.net/showthread.php?t=187177)

saavaage 02-10-2010 19:29 1509795

Утилита по диагностике и настройке XP Pro SP3 Ru
 
Это моя небольшая контрольная работа по теме "Введение в 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 1509958

saavaage,
Можете выложить исходники на другой файлообменник (например rghost)?

saavaage 03-10-2010 01:28 1510013

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

FlatX007 03-10-2010 14:18 1510264

Код:

#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 1511000

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

FlatX007 04-10-2010 12:37 1511017

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

saavaage 04-10-2010 21:53 1511444

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

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

saavaage 05-10-2010 12:55 1511830

Сегодня вечером будет свежий код. Планирую исправить баг с антивирусом и сделать прочие мелкие изменения.

saavaage 05-10-2010 16:36 1512006

Вложений: 1
Выкладываю новую версию утилиты.
Изменения:
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 1512051

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

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

madmasles 05-10-2010 18:07 1512083

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 - как узнать какой антивирус на компе/
У меня ESET Smart Security 3.0, с другими не пробовал.

saavaage 05-10-2010 18:22 1512093

madmasles, смотрел эту ветку, но, нет уверенности, что инфа будет по всем антивирусам, поэтому и решил делать базу названий

файрволл меня только родной XP-шный интересовал. Остальные - личное дело каждого.
Кстати, ваш
Цитата:

Цитата madmasles
ESET Smart Security 3.0 »

определился последней версией?

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

madmasles 05-10-2010 18:31 1512101

Цитата:

Цитата saavaage
определился последней версией? »

Определился.
Цитата:

Цитата saavaage
смотрел эту ветку, но, нет уверенности, что инфа будет по всем антивирусам, поэтому и решил делать базу названий »

А что Вам мешает сделать отдельный модуль, такой, как Software.exe, и люди протестируют, определяются другие антивирусы или нет. :)

saavaage 05-10-2010 18:57 1512123

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

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

madmasles 05-10-2010 19:34 1512154

Цитата:

Цитата saavaage
стоит вводить модуль проверки и изменения разрешения экрана »

Проверить до завтра на большом разрешении не могу. :(

saavaage 05-10-2010 19:36 1512157

madmasles, нужны ли какие-нить дополнительные библиотеки к скриптам топика 11?

FlatX007 05-10-2010 19:40 1512162

Цитата:

Цитата saavaage
нужны ли какие-нить дополнительные библиотеки к скриптам топика 11 »

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

saavaage 05-10-2010 19:49 1512172

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 1512333

[q=saavaage]FlatX007, у меня не пашет. Ошибка…[/quote]
Может у Вас в hosts отсутствует определение localhost? Попробуйте вместо:
Код:

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
пользовать непосредственно:
Код:

$objWMIService = ObjGet("winmgmts:\\.\root\SecurityCenter")
Цитата:

Цитата saavaage
…нет уверенности, что инфа будет по всем антивирусам…»

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

saavaage 05-10-2010 23:08 1512340

Iska, к сожалению, не помогло. Та же самая ошибка

saavaage 05-10-2010 23:39 1512357

Iska, madmasles, кажется я понял, в чем дело (почему не отрабатывает скрипт). Есть одно но - у меня нет Центра Безопасности. Я его ликвидировал еще при сборке своей версии XP. Получается, что вариант не универсальный...

Iska 06-10-2010 00:15 1512384

Ну, тут, как говорится, Вы оказались «сам себе злобный Буратино». Я, например, не вижу особых причин удалять какие-либо стандартные компоненты Windows. Вариант с WMI как раз универсальный, ибо WBEM — это уже стандарт.

saavaage 06-10-2010 01:17 1512425

Проверил по виртуалкой скрипт madmasles. Определился и аваст и pc tools. Как ни странно, родной firewall XP не определился...
Завтра вставлю эти скрипты в код утилиты (наверное будет и один вариант и другой: а) если у пользоватаеля есть служба ЦБ, то проверка - через него, если нет -то через старый вариант; б) если через ЦБ ничего не нашлось, то подключается старый.) и запущу на тестинг. Немного смущает необходимость иметь на борту Центр Безопасности, но ладно.

madmasles, еще раз спасибо!

Iska 06-10-2010 12:49 1512649

saavaage, я думаю, что идея собрать некую базу на определение, какие антивирусы/фаерволлы определяются кодом из #11 весьма неплоха. Я был бы не прочь иметь такую информацию (если кто-то где-то уже не находил такое).

saavaage 07-10-2010 03:52 1513251

Новая версия (надеюсь статус RC1) !
Изменения:
1. переделан модуль проверки информации о присутствующих в системе антивирусе и файрволле (особое спасибо за тестинг stalinit078);
2. устранен баг с аварийным завершением программы при работе с логами файрволла XP (вкладка Security);
3. устранен баг с неправильным отображением информации ою ошибках с обновлениями на вкладке Total
4. проведена работа по устранению стопора автоматической настройки файрволла XP (пока вопросы остались)
5. ряд мелких изменений интерфейса и кода

ссылки в шапке темы!

saavaage 09-10-2010 18:00 1515116

Обновление утилиты!
Устранены все известные баги.
Если не будет нареканий, эта версия станет финалом.

ссылки - см. шапку

saavaage 11-10-2010 03:06 1516034

Обновление! Версия программы 1.0 (RC3)
Изменения:
1. устранен баг с некорректным отображением индикатора Минимальная безопасность на вкладке "Итого"
2. устранен баг с нестабильностью автоматической настройки файрволла XP (при смене пути к папке Мои документы файл локальной политики не подхватывался)
3. устранен баг с блокировкой автозапуска и автозагрузки (не хватало прав на ветку реестра. сейчас получение прав реализовано через утилиту regperm) на вкладке "Безопасность"
4. доработана защита от дурака при задании вручную размеров и места размещения pagefile системы
5. ряд мелких изменений кода.

ссылки - в шапке.

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

saavaage 11-10-2010 18:00 1516497

тихое обновление:
1. улучшен код
2. добавлен запрет на ввод не цифр в поля МИН и МАКС раздела "Задать особый размер" вкладки "Папки"

ссылки - в шапке.

Кто качал предыдущую версию утилиты, эту можно не перекачивать!

Habetdin 12-10-2010 17:33 1517263

saavaage, у меня программа падает при сборе информации :(
Код:

AdlibRegister("_Combo", 500)
Цитата:

Unknown function name

saavaage 12-10-2010 19:40 1517340

Habetdin, проверьте все ли у Вас подключены инклюды.. Проверьте еще раз скрипт (почему-то не находит _Combo() ). Все должно работать.

saavaage 19-10-2010 19:19 1522505

RC5! Версия программы 1.0
Изменения:
1. устранены (я надеюсь) все последние мелкие баги;
2. Добавлена возможность редактирования контекстного меню "Создать" (вкладка Папки - кнопка "Меню "Создать");
3. Добавлена возможность настройки Prefetch (вкладка Папки - кнопка "Настройка Prefetch")

ссылки - в шапке.

saavaage 19-10-2010 19:47 1522539

Извиняюсь, залил немного не ту версию. Сейчас перезалью последний апдейт.

saavaage 19-10-2010 20:10 1522560

перезалил

FlatX007 20-10-2010 07:41 1522806

Не правильно задаёте размер иконок
Код:

$PicAutoInfo = GUICtrlCreateIcon(@ScriptFullPath, 7, 285, 85, 14, 14)
НЕ 14 а 16, 24, 32, 48, 256 ... (ещё возможны - 72, 80, 96, 128)

saavaage 20-10-2010 09:49 1522868

FlatX007, спасибо. Сразу четче стала прорисовка

saavaage 25-10-2010 14:05 1526895

Новая версия! RC7
Изменения:
1. небольшое расширение функционала по созданию папок Temp и Tmp (вкладка Папки) - теперь для этих папок можно задавать режим скрывать/показывать
2. доработан модуль "Меню "Создать"" (вкладка Папки):
1. устранен баг с некорректной работой Службы Восстановления в модуле "Меню Создать". По идее теперь, если данная служба есть в системе, то точка должна быть создана полюбому
2. Довольно сильно дополнен модуль "Меню Создать":
а) теперь отображаются типы .zip, .rtf;
б) расширены возможности по удалению типов файлов из меню (отдельно вынесено полное удаление .rtf, .wordpad, .doc). Проверял, в том числе, работу с офис 2003 - теперь из меню можно удалить все типы (для типа .mdb (access) приходиться делать удаление дважды);
в) расширены возможности по созданию доп. типов файлов в меню (.bfc, .zip, .rtf, .wordpad).

ссылки - в шапке

PS Дальнейшее развитие (если таковое будет) утилиты будет происходить на русском форуме по адресу:
http://autoit-script.ru/index.php/to....html#msg20344


Данный топик закрываю.


Время: 23:54.

Время: 23:54.
© OSzone.net 2001-