Как написать необработанные сектора в \\. \ PhysicalDrive0 в Windows 11? (Доступ запрещен)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как написать необработанные сектора в \\. \ PhysicalDrive0 в Windows 11? (Доступ запрещен)

Сообщение Anonymous »

Я строю инструмент, которому необходимо писать необработанные данные непосредственно на жесткий диск в Windows 11.
Я могу успешно читать из \\. \ physicalDrive0 с использованием createfile () и readfile () , доступ к любому сектору без проблем. Но когда я пытаюсь написать в \\. \ PhysicalDrive0 , я всегда получаю ошибку_аккса_денида .
Что я пробовал:

[*] Запуск как администратор
whise whise whise whise whise whise whise whise ar lifivid whise ar li>

. Включено < /li>
Попытка записать в разделе «Неос» < /li>
Пробовал блокировать и снимать раздел < /li>
< /ul>
Какие привилегии или параметры API необходимы для того, чтобы писать необработанные секторы на физический диск? Возможно ли это даже в пользовательском режиме в Windows 11 или драйвер ядра, работающий в кольце 0 Единственный вариант?#include
#include

int main() {
HANDLE hDrive = CreateFileW(
L"\\\\.\\PhysicalDrive0",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL
);

if (hDrive == INVALID_HANDLE_VALUE) {
printf("Failed to open drive, error: %lu\n", GetLastError());
return 1;
}

BYTE buffer[512] = {0}; // one sector of zeros
DWORD bytesWritten;

BOOL result = WriteFile(hDrive, buffer, sizeof(buffer), &bytesWritten, NULL);

if (!result) {
printf("WriteFile failed, error: %lu\n", GetLastError());
} else {
printf("Wrote %lu bytes\n", bytesWritten);
}

CloseHandle(hDrive);
return 0;
}
< /code>
при запуске в качестве администратора или даже с psexec как система, это обычно печатает что -то вроде: < /p>

writefile.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ess-denied
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»