RegDeleteKey завершается ошибкой с ERROR_ACCESS_DENIED - PullRequest
0 голосов
/ 11 марта 2011

Windows Mobile:
На последнем этапе выгрузки драйвера я пытаюсь удалить подраздел реестра (HKLM \ Drivers \ BuiltIn \ XYZ) с помощью API RegDeleteKey, и он не может вернуть код ERROR_ACCESS_DENIED.

Below are the steps I followed:<br> 1. FindFirstDevice<br> 2. Stored the key and needed values for later use in case I need to reload the driver (Used RegOpenKeyEx and RegQueryValueEx APIs)<br> 3. DeactivateDevice<br> 4. RegCloseKey<br> 5. RegDeleteKey<br>

Шаги с 1 по 4 работают довольно хорошо, однако, шаг 5 не выполняется. Пожалуйста, предложите.

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Причины могут быть

  • Убедитесь, что вы удалили каждую из содержащихся пар значений

  • Возможно, вы пытаетесь удалить ключ, который никому не разрешено удалять. Попробуйте перейти на другой ключ, который вы можете удалить, а затем снова протестируйте код.

  • Вы можете забыть закрыть дескриптор этого ключа (HKLM \ szSubKey) в другом месте. Вы можете создать новое приложение и протестировать приведенный выше код.

  • Если он работает нормально в третьем случае, ключ может использоваться системой или другим процессом, поэтому вы не можете удалить его.

0 голосов
/ 29 марта 2011

Просто чтобы обновить это, я использовал IOCTL шины, чтобы деактивировать устройство и повторно активировать его позже, когда я закончу с промежуточными действиями, которые мне пришлось выполнить. Таким образом, мне не нужно было беспокоиться об удалении реестра. Это довольно аккуратно и безопасно. Никаких проблем с драйвером на устройстве, которое может привести к плохому состоянию системы, если что-то пойдет не так, когда драйвер был выгружен. Вот очень хорошая статья о Как работают драйверы шины WinCE .

...