AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
ChkDskGui (PureBasic)
Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия
Последний раз редактировалось: AZJIO (2024-11-07 09:05), всего редактировалось 44 раз(а)
|
Отправлено: 17-Июл-2020 14:18
(спустя 2 года 2 месяца)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
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
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
|
Отправлено: 19-Июл-2020 17:08
(спустя 1 день 22 часа)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
KisPavVlad, обновил временную версию, но для теста. Вместо Long сделал Integrer, по причине что в других вариантах кода видел именно Integrer, хоть и не понял почему. Но провёл тест зависимости от ширины, происходит ли конвертирование числа в нужную ширину, и оказалось что тип ".b" (число от -127 до + 127 приводит к проблеме), значит число не конвертируется в нужную ширину и зависит от типа. Ну собственно последнее предположение, которое может помочь.Может всё-таки проставить вариант 0-2-0 и так оставить? теоретически если в реестре 0, то работает по схеме 0-2-0. И ещё, наверно всё таки я всё равно буду выкладывать две версии с админом и без. Проблема, например на работе комп с паролем на админа, и фактически я не могу использовать прогу из под админа, хотя без админа основной функционал сохраняется, единственное в колонке MBR будет "---" для всех дисков, и не будет отключение ошибок для картридеров.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
79233Только придать бы ей название. Сразу давай предложение, при условии, чтобы колонка не расширилась, то есть 3 буквы доступны для названия. У меня версий нет, иначе это было бы отражено.
|
Отправлено: 19-Июл-2020 20:39
(спустя 2 часа 37 минут)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
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.
|
Отправлено: 19-Июл-2020 22:57
(спустя 2 часа 17 минут)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
KisPavVlad,но перезапуск самой службы не возвращает как было. Восстановление системы теперь уже не сделаешь. Вот не знаю что теперь делать. То есть вы уже не тестируете, а просто описываете, что не работает и мол впиндюрь строку от avalat, я всё равно буду писать, что не работает пока не будет вариант от avalat? Чтобы запустить службу нужно выполнить services.msc. Найти название службы, в контекстном меню выбрать "Запустить". Твик мог помешать только процессу использующему этот твик, при чём перезапуск Windows перезапустит службу, потому что запуск определяется иными параметрами и падение не отключает службу, а лишь убивает процесс. Обновил основную версию, 4.2
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
79269после всё работает как и работало, а в вашем такая фишка. Ну у тебя же не восстанавливается, сам говорил, то есть ты уже не можешь это проверить. Нужен новый непорочный компьютер. На LiveCD можно проверить. Я почитал про ErrorMode этот флаг используется в очень многих вариантах ошибок, то есть фактически переводит его в 2 не рекомендуется кроме случая если мессага сильно мешает. Хотел найти какой процесс использует этот твик, но похоже любая прога которая делает возврат ошибок системой использует этот твик как условие разрешения на вывод ошибки.перезалил Разметка -> Р-а? а кто догадается что означает Р-а? Само название MBR говорит само за себя. Так что пусть остаётся как есть.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
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
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
AZJIO Поэкспериментировал с батником ChkDsk.cmd , который в архиве. Экспериментировал на установленной Win7x64SP1ru. Из под админской учёки Так вот - если ChkDsk.cmd запускать из под проводника, то в окне после указания любого диска выводится "Тип файловой системы NTFS. CHKDSK недопустим для дисков NTFS" (а у меня все диски NTFS) Через некоторое время ... Вообщем причина косяка был в моем шестьдесятчетырёхбитном chkdsk.exe. x86 версия chkdsk.exe у меня работает безупречно.
|
Отправлено: 18-Янв-2022 21:19
(спустя 3 месяца 1 день)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Не так давно нашёл в чужом кодеSetErrorMode_(#SEM_FAILCRITICALERRORS) не выдавать критических сообщений в случае ошибки при работе с дисками. Мне показалось что это правильный способ исключить 4 сообщения картридера что отсутствует диск при запуске ChkDskGui. Мне попался комп который выдал эти сообщения и я понял что встроенная защит от этого не работает. Когда я обнаружил выше указанный код, то не стал ничего делать так как тестировать не на чем. А сейчас опять попался комп с этими сообщениями. В общем надо будет пробовать и таскать с собой две версии чтобы проверить, что в одной проблема есть, а в другой нет.
|
Отправлено: 06-Июл-2023 04:52
(спустя 1 год 5 месяцев)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Косметические обновления. Ранее я добавилSetErrorMode_(#SEM_FAILCRITICALERRORS) но не мог ни проверить ни объяснить что нужна проверка. В итоге мне попался наконец комп с этой проблемой и проверил, что команда действует только внутри программы, предотвращая вывод ошибок, то есть после запуска русской версии в которой был флаг программа запускалась без проблем, а при попытке запуска англ. версии в которую я специально не добавлял флаг, чтобы проверить в будущем, эта версия выдала ошибку. Теперь я эту команду вставил и в мультиязычную версию и в версию с запросом админа. А также проверил инструментом на поиск неиспользуемых переменных (удалил их). Использование типа integer вместо байтовых типов, это на форуме советовали не использовать для флагов байтовые переменные для компактности кода, всё равно ячейка будет занята размером integer, а с неё через сложную манипуляцию с использованием структуры будет взят байт, игра не стоит свеч. Пропустил исходник через инструмент, чтобы задать правильные отступы в одном стиле. Так что для русского исполняемого файла практически ничего не изменилось и обновлять не стоит. Возможно версию от админа лучше сделать мультиязычной.
|
Страница 34 из 34
Текущее время: 21-Ноя 14:48
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|