[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
ChkDskGui (PureBasic) Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия


Последний раз редактировалось: AZJIO (2023-01-25 16:21), всего редактировалось 43 раз(а)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
KisPavVlad, проверил на втором компе, у меня же тоже есть картридер-флешка с одним логическим входом, но 2-мя физическими под разные размеры. В моём компе он не даёт ошибку, а в другом компе на WinXP даёт, перенёс утилиту туда, ошибка не вылетает с новой версией, а при использовании позже предыдущей версии с MBR ошибка снова вылетает. То есть теоретически работает как надо.
В модуле работы с реестром есть такая вещь
WOW64 = #False,      ; If #TRUE, uses the 'Wow6432Node' path for Key
...
Procedure.i DeleteKey(topKey, KeyName.s, WOW64 = #False, *Ret.RegValue = 0)
  Protected error, samDesired = #KEY_WRITE
  If WOW64
    CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
      samDesired | #KEY_WOW64_64KEY
    CompilerElse
      samDesired | #KEY_WOW64_32KEY
    CompilerEndIf
  EndIf
Но так как она отключена по умолчанию, то я не стал экспериментировать с добавлением флага, так как по умолчанию должно работать.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Нет

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
KisPavVlad, обновил временную версию, но для теста. Вместо Long сделал Integrer, по причине что в других вариантах кода видел именно Integrer, хоть и не понял почему. Но провёл тест зависимости от ширины, происходит ли конвертирование числа в нужную ширину, и оказалось что тип ".b" (число от -127 до + 127 приводит к проблеме), значит число не конвертируется в нужную ширину и зависит от типа. Ну собственно последнее предположение, которое может помочь.
Может всё-таки проставить вариант 0-2-0 и так оставить?
теоретически если в реестре 0, то работает по схеме 0-2-0.
И ещё, наверно всё таки я всё равно буду выкладывать две версии с админом и без. Проблема, например на работе комп с паролем на админа, и фактически я не могу использовать прогу из под админа, хотя без админа основной функционал сохраняется, единственное в колонке MBR будет "---" для всех дисков, и не будет отключение ошибок для картридеров.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
79233Только придать бы ей название.
Сразу давай предложение, при условии, чтобы колонка не расширилась, то есть 3 буквы доступны для названия. У меня версий нет, иначе это было бы отражено.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
KisPavVlad, попробуй тест.
1. проверь, что ошибка вылетает для старых версий x86 и x64, потом запусти новую x86 и проверь на старых пропала ли ошибка, потом запусти новую x64 и проверь на старых пропала ли ошибка.
2. Как я понимаю ты версией от avalat восстанавливаешь как было... Но не важно восстанови как было, сделай снимок реестра прогой regshot, далее запусти новую x86 или x64, чтобы возникла проблема, далее сделай второй снимок в regshot и сравни снимки. Будет понятно что меняется у тебя в реестре после использования ChkDskGui. Или проверь упрощённо, просто экспортируй ErrorMode в reg-файл, до и после. У меня получаются одинаковые reg-файлы, поэтому я не понимаю, что ты от меня хочешь.
Кстати, будет поправка, MBR/GPT оказывается не требует админа, если флаг 0 (вместо GENERIC_READ), что обозначает запрос параметров диска без обращения к диску, то есть запрос атрибутов. Я хотел скрыть колонку указав ширину 0 если запуск без админа, но благодаря тому что у меня не появились фирм.имена физ.дисков выявил что раньше то работало, а разница только во флаге GENERIC_READ, думая что это правильно вместо явных чисел, а оказалось в справке указано что надо 0.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
KisPavVlad,
но перезапуск самой службы не возвращает как было. Восстановление системы теперь уже не сделаешь. Вот не знаю что теперь делать.
То есть вы уже не тестируете, а просто описываете, что не работает и мол впиндюрь строку от avalat, я всё равно буду писать, что не работает пока не будет вариант от avalat?
Чтобы запустить службу нужно выполнить services.msc. Найти название службы, в контекстном меню выбрать "Запустить". Твик мог помешать только процессу использующему этот твик, при чём перезапуск Windows перезапустит службу, потому что запуск определяется иными параметрами и падение не отключает службу, а лишь убивает процесс.
Обновил основную версию, 4.2

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
79269после всё работает как и работало, а в вашем такая фишка.
Ну у тебя же не восстанавливается, сам говорил, то есть ты уже не можешь это проверить. Нужен новый непорочный компьютер. На LiveCD можно проверить.
Я почитал про ErrorMode этот флаг используется в очень многих вариантах ошибок, то есть фактически переводит его в 2 не рекомендуется кроме случая если мессага сильно мешает. Хотел найти какой процесс использует этот твик, но похоже любая прога которая делает возврат ошибок системой использует этот твик как условие разрешения на вывод ошибки.
неувязочка с билдом
перезалил
Разметка -> Р-а? а кто догадается что означает Р-а? Само название MBR говорит само за себя. Так что пусть остаётся как есть.

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
Любая x64 версия ChkDskGui из свежего архива не хочет поверять NTFS
Пишет следующее:
Тип файловой системы NTFS
CHKDSK недопустим для дисков NTFS

Проверял на Win7x64 из под обычного пользователя, админа и ТИ
Версии же x86 работют идеально.
Вот я и чешу свою репу ... Как такое может быть ?
Если нужно, то скрины приложу

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
rekshd, проблема случайно не эта? Скачал с шапки, запустил x64, проверил загрузочный NTFS диск S:\ размером 500Мб с занятым пространством 100Мб, мгновенно отработал. Там по сути работает родной CHKDSK, прога просто формирует ключи, делает удобный выбор, а работает CHKDSK находящийся в ОС. Там есть опция копирования ком-строки, чтобы выполнить через Win+R, то есть прога не может ни запретить CHKDSK работать, ни помешать ему как то.
MD5 ChkDskGui_x64.exe: AB42692603C1933A5CBB25B4ABD9AA63
Проверка с помощью 7zip
Имя: ChkDskGui_x64.exe
Размер: 162816 байтов (159 KiB)
CRC32: 5C2B824E
CRC64: D410AF2DDDD1859A
SHA256: EDDA49CC3EAA5893ABBD40AA349A1CB02867E834D983D9EBB6938879F4A75E2B
SHA1: A1C55336FE2A28E8A54620900B5B61618EDB433D
BLAKE2sp: 0B7644DC91BCCEC7907743ADFA44D997DD426287505DC39C810BAF357278F49E

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
AZJIO
Поэкспериментировал с батником ChkDsk.cmd , который в архиве. Экспериментировал на установленной Win7x64SP1ru. Из под админской учёки
Так вот - если ChkDsk.cmd запускать из под проводника, то в окне после указания любого диска выводится "Тип файловой системы NTFS. CHKDSK недопустим для дисков NTFS"
(а у меня все диски NTFS) aq
Через некоторое время ...
Вообщем причина косяка был в моем шестьдесятчетырёхбитном chkdsk.exe.
x86 версия chkdsk.exe у меня работает безупречно.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Не так давно нашёл в чужом коде
SetErrorMode_(#SEM_FAILCRITICALERRORS)
не выдавать критических сообщений в случае ошибки при работе с дисками. Мне показалось что это правильный способ исключить 4 сообщения картридера что отсутствует диск при запуске ChkDskGui. Мне попался комп который выдал эти сообщения и я понял что встроенная защит от этого не работает. Когда я обнаружил выше указанный код, то не стал ничего делать так как тестировать не на чем. А сейчас опять попался комп с этими сообщениями. В общем надо будет пробовать и таскать с собой две версии чтобы проверить, что в одной проблема есть, а в другой нет.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Косметические обновления.
Ранее я добавил
SetErrorMode_(#SEM_FAILCRITICALERRORS)
но не мог ни проверить ни объяснить что нужна проверка. В итоге мне попался наконец комп с этой проблемой и проверил, что команда действует только внутри программы, предотвращая вывод ошибок, то есть после запуска русской версии в которой был флаг программа запускалась без проблем, а при попытке запуска англ. версии в которую я специально не добавлял флаг, чтобы проверить в будущем, эта версия выдала ошибку. Теперь я эту команду вставил и в мультиязычную версию и в версию с запросом админа.
А также проверил инструментом на поиск неиспользуемых переменных (удалил их). Использование типа integer вместо байтовых типов, это на форуме советовали не использовать для флагов байтовые переменные для компактности кода, всё равно ячейка будет занята размером integer, а с неё через сложную манипуляцию с использованием структуры будет взят байт, игра не стоит свеч.
Пропустил исходник через инструмент, чтобы задать правильные отступы в одном стиле.
Так что для русского исполняемого файла практически ничего не изменилось и обновлять не стоит. Возможно версию от админа лучше сделать мультиязычной.

Страница 34 из 34


Показать сообщения:    

Текущее время: 19-Апр 19:50

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы