Я строю инструмент, которому необходимо писать необработанные данные непосредственно на жесткий диск в 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