Как можно получить ненулевой код возврата от chkdsk.exe?

Как можно получить ненулевой код возврата от chkdsk.exe?

Я пишу служебную программу, которая, помимо прочих задач, будет запускать chkdsk.exe в режиме только для чтения на вторичных жестких дисках NTFS. Чтобы полностью протестировать мою утилиту, мне нужно вызвать состояние на одном из этих дисков, которое chkdsk обнаружит как ошибку... желательно таким образом, чтобы не уничтожить существующие данные на диске. Как проще всего это сделать?

Редактировать:

В идеале я хотел бы создать фиктивный текстовый файл на одном из этих дисков, а затем испортить этот файл таким образом, что chkdsk посчитает, что его нужно исправить. Я не уверен, как испортить файл.

решение1

Вы можете просто указать неверную командную строку:

c:\>chkdsk FailPlease
The drive, the path, or the file name is not valid.
c:\>echo %ERRORLEVEL%
3

решение2

Я думаю, вам нужно что-то, что может надежно монтировать файловую систему как диск из поврежденного (или псевдо-поврежденного состояния). Первое, что приходит мне на ум, этоTrueCrypt

  • Создайте зашифрованный файловый контейнер TrueCrypt
  • Смонтируйте его, сохраните на нем некоторые файлы.
  • Как-нибудь испортите эти файлы. Или просто оставьте их неформатированными, этого может быть достаточно для chkdskвозврата ненулевого значения.
  • Сохраните свое изображение

Теперь ваш скрипт может создать копию образа, смонтировать ее, позволить chkdsk попытаться исправить ситуацию, а затем удалить образ.

Связанный контент