Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Windows

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

18.04.2024 15:39


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 после каждой цифирьки добавить надо - вероятно из-за возможного юникода

т.е. реально прочитать и записать то что надо :) правда для русских букв надо искать другое преобразование - но уже просто лень ...
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, время: 15:39.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.