Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Не может записать на физический диск в Win 7?

Автор вопроса: mattОтветов: 1

Я написал дисковую утилиту, которая позволяла стирать все физические диски. он использует api файла Windows, вызывая:

destFile = CreateFile("\\\\.\\PhysicalDrive1",
    GENERIC_WRITE,  FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL, OPEN_EXISTING,createflags, NULL);

а затем просто вызовите WriteFile и убедитесь, что вы пишете несколько секторов, то есть 512 байт.

в прошлом это прекрасно работало на XP и даже на Win7 RC, все, что вам нужно сделать, это убедиться, что вы запускаете его как администратор.

но теперь у меня есть розничная Win7 professional, она больше не работает! диски по-прежнему открыты для записи, но вызов WriteFile на успешно открытом диске теперь не выполняется!

кто-нибудь знает, почему это может быть? могло ли это иметь какое-то отношение к его открытию с помощью общих флагов? это всегда то, что я делал раньше, и это сработало. может быть, что-то сейчас разделяет диск? блокирование записи? Есть ли способ правильно "размонтировать" диск или, по крайней мере, его разделы, чтобы у меня был монопольный доступ к нему?

некоторые другие инструменты, которые раньше работали, тоже больше не работают, но некоторые работают, например, функция стирания WD Diagnostic. и после того, как он стер данные с диска, мой инструмент тоже работает с ним! Это заставило меня поверить в то, что мне нужно сначала выполнить какой-то процесс "размонтирования" с диском, чтобы освободить права на запись на него.

Любые идеи?

Обновлять:

код ошибки, возвращаемый из WriteFile, - "5", ERROR_ACCESS_DENIED, но опять же, если я сначала "сотру" диск с помощью WD Diag, я могу получить доступ и записать на диск в порядке. когда я снова инициализирую диск и задаю ему раздел, я возвращаюсь к ошибке ERROR_ACCESS_DENIED.

  • Сообщите код ошибки или сообщение об ошибке. jweyrich 11.04.2010
  • @jweyrich: ошибка: ERROR_ACCESS_DENIED matt 11.04.2010
  • Я предлагаю проверить, есть ли у UAC что-нибудь с этим. Попробуйте отключить его и повторно запустить приложение. Прокомментируйте результаты. jweyrich 11.04.2010

permissionswindows-7

Ответы

Ответ 1 · рейтинг 1 · tyranid

Это почти наверняка связано с предотвращением обнаруженной атаки на подпись драйверов путем изменения секторов в файле подкачки. Это предотвратит запись в области диска, содержащие разделы.

См. http://msdn.microsoft.com/en-us/library/aa365747%28VS.85%29.aspx и просмотрите информацию, начинающуюся с текста "Если вы пишете напрямую в том, на котором установлена ​​файловая система", в основном вам нужно заблокировать диск тома для записи в свои сектора.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы