int getRegRoot(int * hkey)


Pointer to an integer value which will hold the root identification.


Returns ERROR_SUCCESS if the operation was successful, otherwise it returns one of the following integer error codes:
ERROR_SUCCESS(==0) no error
ERROR_FILE_NOT_FOUNDkey or value name not found
ERROR_MORE_DATAbuffer wasn't big enough (e.g., getRegString, getRegData)
ERROR_NO_MORE_ITEMSindex >= # of values or subkeys (enumRegValue, enumRegSubKey)
ERROR_INVALID_FUNCTIONbad top-level key, etc
ERROR_INVALID_DATAwrong data type or size (or size > 2048)
ERROR_BADDBregistry database is corrupt
ERROR_BADKEYregistry key is invalid
ERROR_CANTOPENregistry key could not be opened
ERROR_CANTREADregistry key could not be read
ERROR_CANTWRITEregistry key could not be written
ERROR_REGISTRY_CORRUPTregistry is corrupt
ERROR_REGISTRY_IO_FAILEDinput/output to registry failed
ERROR_KEY_DELETEDIllegal operation attempted on a Registry key which has been marked for deletion.
ERROR_KEY_HAS_CHILDRENcannot delete a key with subkeys (Windows NT)


Gets the current registry root.
Currently, only two types of registry roots are possible, identified by the constants (HKEY_LOCAL_MACHINE)? and (HKEY_CURRENT_USER)?.


// Check to see if we're working with HKEY_LOCAL_MACHINE
int * root;
Info("Working with local machine: %s", (root == HKEY_LOCAL_MACHINE? "true" : "false"));

Also see

setRegRoot, getRegPath


Everyone can add his comments about his experiences with this function here. Tips for using it are welcome, too.