Форум по программному обеспечению и оборудованию > > >

Как автоматически принудительно проверить любой (или все) диски при загрузке?

06.12.2016 8:46


[ОТВЕТИТЬ]
Опции темы
21.10.2014 20:10  
student
Цитата:
Сообщение от twix
fsutil dirty set c:
Должно выставить "грязный" бит на указанный раздел, что вызовет его автоматическую проверку при следующей загрузке
не помню уже откуда :(
фсутилу требуется только нтфс том
да и как пишут - "Некоторые операции с логическими дисками не могут быть выполнены, если логический диск имеет пометку dirty bit. Например, невозможно выполнить дефрагментацию флеш-накопителя, если у него есть dirty bit" - так что его устанавливать надо только перед перезагрузкой

Цитата:
Сообщение от baggio
там надо в реестр пихать бит что ФС не консистента...
только не бит :)

ветка реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
параметр
BootExecute
значение
autocheck autochk /p \??\C: autocheck autochk /p \??\D: autocheck autochk *
это для 2-х дисков с и д

чтобы отключить - надо строку
autocheck autochk *

правда там параметр - расширенная строка - просто так не воткнешь (hex значения при сохранении\загрузки с реестра)
т.е. надо поправить в реестре напрямую и сохранить свою строку, потом юзать, либо юзать api - RegSetValueExA
 
21.10.2014 20:20  
OlegON
спасибо, только вот расширенную строку из командной строки вряд ли воткнешь... подумалось было про reg.exe, но опасно, что в этом BootExecute будет что-то еще до выставления моих команд, а это уже путь поглубже сильно в программирование, чем хотелось бы, поскольку недоос у меня редко попадается...
Интересно, а куда сам чекдиск пишет? Ведь там два варианта, в т.ч. логическая и физическая проверка...
 
21.10.2014 20:29  
baggio
Цитата:
Сообщение от Mtirt
Один вопрос. А нельзя в скрипте Y сказать?
а можно работающий пример ...
чисто на будущее...
 
21.10.2014 20:38  
student
Цитата:
Сообщение от OlegON
спасибо, только вот расширенную строку из командной строки вряд ли воткнешь...
попробовать можно :) записать свою строку в реестр, получить hex (запомнить его) и потом этот hex склеивать со строкой что получена с реестра при чтении - по идее все через рег.ехе сделать возможно

например сейчас у меня

"BootExecute"=hex(7):61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20,00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,00,00,00,00
это для "autocheck autochk *"

"BootExecute"=hex(7):61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20, 00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,20,00,3a,04,3e,04,3c,04,30,04,3d,04,34,04,30,04,00,00,00,00
это для "autocheck autochk * команда"

"BootExecute"=hex(7):3a,04,3e,04,3c,04,30,04,3d,04,34,04,30,04,20,00,61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20,00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,00,00,00,00
это для "команда autocheck autochk *"

т.е. в принципе можно выделить одно из другого и склеить как надо если приспичит

ПЫ СЫ
кстати если "autocheck" разобрать по буковкам получить asci код буковки и пребразовать его в hex то как раз и получишь :)
61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00
только 00 после каждой цифирьки добавить надо - вероятно из-за возможного юникода

т.е. реально прочитать и записать то что надо :) правда для русских букв надо искать другое преобразование - но уже просто лень ...
 
"Спасибо" student от:
21.10.2014 22:04  
OlegON
Цитата:
Сообщение от baggio
а можно работающий пример ...
чисто на будущее...
работающий только на Y, но не по теме
Код:
echo Y| chkdsk /F C:
не пробовал, общий принцип такой
 
21.10.2014 22:05  
twix
Цитата:
Сообщение от OlegON
работающий только на Y, но не по теме
Код:
echo Y| chkdsk /F C:
не пробовал, общий принцип такой
Именно так и работает. Только что проверил на всякий случай.
 
 


Опции темы



Часовой пояс GMT +3, время: 08:46.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.