Какие коды ошибок RegOpenKeyEx возвращает при сбое? - PullRequest
3 голосов
/ 18 февраля 2010

Документация MSDN:

http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx

Странно молчит о том, какие ошибки может возвращать эта функция.

Меня особенно интересует, какой код ошибки возвращается, если ключ не существует, но было бы неплохо получить более полную информацию.

Ответы [ 3 ]

3 голосов
/ 18 февраля 2010

Это стандартный код ошибки ядра Win32. Тип кода, который возвращает GetLastError (), поэтому набор возможных значений можно найти в WinError.h. Обратите внимание, что это , а не значения HRESULT.

//  The configuration registry database is corrupt.
//
#define ERROR_BADDB                      1009L

//  The configuration registry key is invalid.
//
#define ERROR_BADKEY                     1010L

//  The configuration registry key could not be opened.
//
#define ERROR_CANTOPEN                   1011L

//  The configuration registry key could not be read.
//
#define ERROR_CANTREAD                   1012L

//  The configuration registry key could not be written.
//
#define ERROR_CANTWRITE                  1013L

//  One of the files in the registry database had to be recovered by use of a log or alternate copy. The recovery was successful.
//
#define ERROR_REGISTRY_RECOVERED         1014L

//  The registry is corrupted. The structure of one of the files containing registry data is corrupted, or the system's memory image of the file is corrupted, or the file could not be recovered because the alternate copy or log was absent or corrupted.
//
#define ERROR_REGISTRY_CORRUPT           1015L

//  An I/O operation initiated by the registry failed unrecoverably. The registry could not read in, or write out, or flush, one of the files that contain the system's image of the registry.
//
#define ERROR_REGISTRY_IO_FAILED         1016L

//  The system has attempted to load or restore a file into the registry, but the specified file is not in a registry file format.
//
#define ERROR_NOT_REGISTRY_FILE          1017L

//  Illegal operation attempted on a registry key that has been marked for deletion.
//
#define ERROR_KEY_DELETED                1018L

//  System could not allocate the required space in a registry log.
//
#define ERROR_NO_LOG_SPACE               1019L

//  Cannot create a symbolic link in a registry key that already has subkeys or values.
//
#define ERROR_KEY_HAS_CHILDREN           1020L

//  Cannot create a stable subkey under a volatile parent key.
//
#define ERROR_CHILD_MUST_BE_VOLATILE     1021L

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

Редактировать: очевидно, ошибка для несуществующего ключа ERROR_FILE_NOT_FOUND.

1 голос
/ 18 февраля 2010

Почему бы вам просто не попробовать и посмотреть в отладчике, что он возвращает?

В отладчике Visual Studio вы можете просто ввести

$err

, чтобы увидеть код ошибкипоследняя выполненная функция и

$err,hr

для просмотра последней ошибки в полном тексте.

0 голосов
/ 26 сентября 2018
ERROR_FILE_NOT_FOUND
    2 (0x2)
    The system cannot find the file specified.

уже был замечен gdunbar.

Я только что столкнулся с

ERROR_BAD_PATHNAME
    161 (0xA1)
    The specified path is invalid.

, когда ошибочно использовал имя пути, начинающееся с символа '\\'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...