VB 6 Windows Error Detect (сбор данных для анализа причин сбоев)

Кирилл

Команда форума
Администратор
Ассоциация VN
Сообщения
14,038
Решения
2
Реакции
5,740
Итак,что хочется.
Утилита для сбора необходимой информации для быстрого анализа системы и возможных причин появления сбоев.
С последующим развитием функционала до взаимодействия с пользователем путем выполнения заготовленных таблеток и внедрения скриптов ,возможно заранее заготовленного кода.

1)Базовый лог (стандартный запуск)

  • Системный журнал,удобно читаемый.
  • Информация о системе,оборудовании,установленном программном обеспечении.
  • Лог загрузки процессора
  • Температуры,SMART
  • Автозагрузка
  • список процессов с выводом дочерних и потребляемых ресурсов

  • Частично можно воспользоваться например SITLog от Glax,если он не против -там кое что уже реализовано.
2)Дополнительный лог
(каждый пункт запрашивается отдельно)

  • Тест диска и получение лога (chkdsk)
  • Включение записи малого дампа и получение его в архив
  • sfc /*
  • progdump


3)Таблетки

Таблетки нужно будет периодически добавлять,отсюда следует что эту возможность надо предусмотреть.
 
Последнее редактирование:
Итого таки начал потихоньку ... проект по проверке целостности файлов тоже будет переведен сюда.
Сейчас думаю над удобной навигацией.

Если у кого есть желание то можете выразить критику или аргументы.
 

Вложения

На x64 не работает. Запустив перехватчик консольных окон понял почему.

Тебе нужно добавить отключение файлового редиректора.
Можешь это делать также как реализовано в HJT, отключаешь в самом начале программы и включаешь перед ее завершением (в твоем случае можно поставить на процедуру события закрытия формы).
Держи код:
VB.NET / VBA:
Option Explicit

Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryW" (ByVal lpFileName As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function GetCurrentProcess Lib "kernel32.dll" () As Long
Private Declare Function IsWow64Process Lib "kernel32" (ByVal hProcess As Long, ByRef Wow64Process As Long) As Long
Private Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" (OldValue As Long) As Long
Private Declare Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" (OldValue As Long) As Long

Private Sub Form_Load()
    ' отключаем
    If IsWOW64() Then ToggleWow64FSRedirection False
end sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    'включаем
    ToggleWow64FSRedirection True
End Sub


Function IsWOW64() As Boolean
    Dim hModule As Long, procAddr As Long, lIsWin64 As Long
 
    hModule = LoadLibrary(StrPtr("kernel32.dll"))
    If hModule Then
        procAddr = GetProcAddress(hModule, "IsWow64Process")
        If procAddr <> 0 Then
            IsWow64Process GetCurrentProcess(), lIsWin64
            IsWOW64 = CBool(lIsWin64)
        End If
        FreeLibrary hModule
    End If
End Function

Public Sub ToggleWow64FSRedirection(bEnable As Boolean)
    Static lWow64Old As Long
    If bEnable Then
        If lWow64Old <> 0 Then
            Wow64RevertWow64FsRedirection lWow64Old
            lWow64Old = 0
        End If
    Else
        If lWow64Old = 0 Then Wow64DisableWow64FsRedirection lWow64Old
    End If
End Sub
 

Вложения

  • res.webp
    res.webp
    10.5 KB · Просмотры: 137
Последнее редактирование:
Кстати, да, нужно отталкиваться от версии ОС. Например, в XP, нет всего что связано с восстановлением хранилища и т.п.
И командную строку запускай через обычную функцию Shell "sfc /scannow"
а то в XP это вызывает вместо запуска диалоговое окно "Запуск от имени...".
 
Например, в XP, нет всего что связано с восстановлением хранилища и т.п.
Это все учитываться,конечно,будет.
через обычную функцию Shell "sfc /scannow"
с получением прав для проги это так и будет делаться,так как нужда в ShellExecute с аргументами отпадает
А на xp не работает
А что именно?
 
В XP при запуске:
Выполнить проверку sfc /scannow
Ошибка
---------------------------
dism.exe
---------------------------
Windows не удалось найти 'dism.exe'. Проверьте, что имя было введено правильно, и повторите попытку. Чтобы выполнить поиск файла, нажмите кнопку "Пуск", а затем выберите команду "Найти".
---------------------------

Остальные тесты:
Выполнить проверку CHKDSK, SMART, Получить лог последнего CHKDSK, Монтировать образ диска. (Запуск от имени другого пользователя)
 
Остальные тесты:
Выполнить проверку CHKDSK, SMART, Получить лог последнего CHKDSK, Монтировать образ диска. (Запуск от имени другого пользователя)

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


В XP при запуске:
Выполнить проверку sfc /scannow
Ошибка
Да,точно))
Для хр по другому делается,исправлю.

Сейчас жду что скажет Стас,почему права при подключении манифеста не получены.
 
Можно, но там нужно в проекте MS Visual Studio указывать ссылку на этот файл.
не, если файл компилируется, то конечно лучше сразу при компиляции его засунуть. Я просто для общего развития, что есть ещё один способ. При этом ещё можно было редактировать манифест и сразу проверять результат.
 
Новый образец для желающих помочь проверить работоспособность на разных ОС
Включена только категория восстановление системы,таблетки и скрипты тоже пока отключил
 
Ну вот и первый результат теста. :Hi:

block.webp
block2.webp
block3.webp
Кстати могу на твоем файле продемонстрировать малодокументированные функции SNS (в разделе тестирования).
Одно изменение в настройках и браузеры защищены так, что никакие внешние файлы не смогут быть скачаны и/или запущены.
Твой файл идеально подходит по той причине, что он необычный и написан кем-то неизвестным и без цели заразить ПК.
Ну и потому, что тебя тут все знают.
 
Последнее редактирование:
SNS-amigo, его интересовала не антивирусная проверка, а тест функционала программы.

Koza Nozdri, вроде работает, только хотелось бы чтобы в конце сканирования открывалось диалоговое окно сохранения файла-отчета (лучше сразу в виде архива).
А вначале, чтобы появлялось окно "Рекомендуется вставить установочный CD-диск", а то я на таком темном фоне прочитал эту рекомендацию уже только после того, как просканировал.
Отправил твой файл в Avira и Bkav.
 
Последнее редактирование:
Ваша реклама продукта SNS здесь неуместна. Дальнейшие такие посты в моем разделе буду удалять без предупреждений.

Кирилл просил протестировать, я протестировал, как понял.
 
Последнее редактирование модератором:
SNS-amigo,Андрей.
В этой теме процесс разработки программы.
WED не имеет цифровой подписи,не рассылался вирлабам и т.д. - конечно реакция на программу будет однозначна.
Мне важно знать на всех ли ОС она работает,не падает ли пока в коде 1000 строк а не 100 000,что бы легче было переделать.

А тестирование с SNS и всем остальным ПО будет после выпуска публичной рабочей версии))
бы чтобы в конце сканирования открывалось диалоговое окно сохранения файла-отчета (лучше сразу в виде архива).
Ок,сделаю.
И про диск тоже.
а то я на таком темном фоне
Вот все сомневался насчет картинки)))
Надо будет оригинальную сообразить потом.
 
Последнее редактирование:
Андрей,не суть,повторюсь что отрабатывается работоспособность,навигация и дизайн программы,если есть желание помоги с тестом,все остальное не в эту тему.
+ принмаются хотелки и предложения.
 
Последнее редактирование:
Кирилл попробовал на 10 работает.А картинку и правда лучше сменить.
 
На XP утиль вообще не запускается. Посмотрел на 7-ке. Размер кнопок надо бы увеличить

ece27e833b9b713e1e7a6cc16d4b39c9.webp
 
Назад
Сверху Снизу