Compartir a través de


Clase CRegKey

Esta clase proporciona métodos para manipular entradas en el Registro del sistema.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

class CRegKey

Miembros

Constructores públicos

Nombre Descripción
CRegKey::CRegKey Constructor .
CRegKey::~CRegKey El destructor .

Métodos públicos

Nombre Descripción
CRegKey::Attach Llame a este método para adjuntar un elemento HKEY al objeto CRegKey estableciendo el manipulador del miembro m_hKey en hKey.
CRegKey::Close Llame a este método para liberar el manipulador del miembro m_hKey y establecerlo en NULL.
CRegKey::Create Llame a este método para crear la clave especificada, si no existe como subclave de hKeyParent.
CRegKey::DeleteSubKey Llame a este método para quitar la clave especificada del Registro.
CRegKey::DeleteValue Llame a este método para quitar un campo de valor de m_hKey.
CRegKey::Detach Llame a este método para desasociar el manipulador del miembro m_hKey del objeto CRegKey y establecer m_hKey en NULL.
CRegKey::EnumKey Llame a este método para enumerar las subclaves de la clave del Registro abierta.
CRegKey::Flush Llame a este método para escribir todos los atributos de la clave del Registro abierta en el Registro.
CRegKey::GetKeySecurity Llame a este método para recuperar una copia del descriptor de seguridad que protege la clave del Registro abierta.
CRegKey::NotifyChangeKeyValue Este método notifica al autor de la llamada los cambios realizados en los atributos o el contenido de la clave del Registro abierta.
CRegKey::Open Llame a este método para abrir la clave especificada y establecer m_hKey en el manipulador de esta clave.
CRegKey::QueryBinaryValue Llame a este método para recuperar los datos binarios de un nombre de valor especificado.
CRegKey::QueryDWORDValue Llame a este método para recuperar los datos de tipo DWORD de un nombre de valor especificado.
CRegKey::QueryGUIDValue Llame a este método para recuperar los datos de tipo GUID de un nombre de valor especificado.
CRegKey::QueryMultiStringValue Llame a este método para recuperar los datos de tipo cadena múltiple de un nombre de valor especificado.
CRegKey::QueryQWORDValue Llame a este método para recuperar los datos de tipo QWORD de un nombre de valor especificado.
CRegKey::QueryStringValue Llame a este método para recuperar los datos de tipo cadena de un nombre de valor especificado.
CRegKey::QueryValue Llame a este método para recuperar los datos del campo de valor especificado de m_hKey. Las versiones anteriores de este método ya no se admiten y se marcan como ATL_DEPRECATED.
CRegKey::RecurseDeleteKey Llame a este método para quitar la clave especificada del Registro y quitar explícitamente las subclaves.
CRegKey::SetBinaryValue Llame a este método para establecer el valor binario de la clave del Registro.
CRegKey::SetDWORDValue Llame a este método para establecer el valor DWORD de la clave del Registro.
CRegKey::SetGUIDValue Llame a este método para establecer el valor GUID de la clave del Registro.
CRegKey::SetKeySecurity Llame a este método para establecer la seguridad de la clave del Registro.
CRegKey::SetKeyValue Llame a este método para almacenar datos en un campo de valor especificado de una clave especificada.
CRegKey::SetMultiStringValue Llame a este método para establecer el valor de cadena múltiple de la clave del Registro.
CRegKey::SetQWORDValue Llame a este método para establecer el valor QWORD de la clave del Registro.
CRegKey::SetStringValue Llame a este método para establecer el valor de cadena de la clave del Registro.
CRegKey::SetValue Llame a este método para almacenar datos en el campo de valor especificado de m_hKey. Las versiones anteriores de este método ya no se admiten y se marcan como ATL_DEPRECATED.

Operadores públicos

Nombre Descripción
CRegKey::operator HKEY Convierte un objeto CRegKey en un objeto HKEY.
CRegKey::operator = Operador de asignación.

Miembros de datos públicos

Nombre Descripción
CRegKey::m_hKey Contiene un manipulador de la clave del Registro asociada al objeto CRegKey.
CRegKey::m_pTM Puntero al objeto CAtlTransactionManager

Comentarios

CRegKey proporciona métodos para crear y eliminar claves y valores del Registro del sistema. El registro contiene un conjunto de definiciones específico de la instalación para componentes del sistema, como números de versión de software, asignaciones lógicas a físicas del hardware instalado y objetos COM.

CRegKey proporciona una interfaz de programación para el Registro del sistema de una máquina determinada. Por ejemplo, para abrir una clave del Registro determinada, llame a CRegKey::Open. Para recuperar o modificar un valor de datos, llame a CRegKey::QueryValue o CRegKey::SetValue, respectivamente. Para cerrar una clave, llame a CRegKey::Close.

Al cerrar una clave, sus datos del Registro se escriben (vacían) en el disco duro. Este proceso puede tardar varios segundos. Si la aplicación debe escribir explícitamente datos del Registro en el disco duro, puede llamar a la función Win32 RegFlushKey. Sin embargo, RegFlushKey usa muchos recursos del sistema y solo se debe llamar cuando sea absolutamente necesario.

Importante

Los métodos que permiten al autor de la llamada especificar una ubicación del Registro tienen la posibilidad de leer datos que pueden no ser de confianza. Los métodos que usan RegQueryValueEx deben tener en cuenta que esta función no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

Requisitos

Encabezado: atlbase.h

CRegKey::Attach

Llame a este método para adjuntar un elemento HKEY al objeto CRegKey estableciendo el manipulador del miembro m_hKey en hKey.

void Attach(HKEY hKey) throw();

Parámetros

hKey
Manipulador de una clave del Registro.

Comentarios

Attach hará una aserción si m_hKey no es NULL.

CRegKey::Close

Llame a este método para liberar el manipulador del miembro m_hKey y establecerlo en NULL.

LONG Close() throw();

Valor devuelto

Si la operación se realiza correctamente, devuelve ERROR_SUCCESS; de lo contrario, devuelve un valor de error.

CRegKey::Create

Llame a este método para crear la clave especificada, si no existe como subclave de hKeyParent.

LONG Create(
    HKEY hKeyParent,
    LPCTSTR lpszKeyName,
    LPTSTR lpszClass = REG_NONE,
    DWORD dwOptions = REG_OPTION_NON_VOLATILE,
    REGSAM samDesired = KEY_READ | KEY_WRITE,
    LPSECURITY_ATTRIBUTES lpSecAttr = NULL,
    LPDWORD lpdwDisposition = NULL) throw();

Parámetros

hKeyParent
Manipulador de una clave abierta.

lpszKeyName
Especifica el nombre de una clave que se va a crear o abrir. Este nombre debe ser una subclave de hKeyParent.

lpszClass
Especifica la clase de la clave que se va a crear o abrir. El valor predeterminado es REG_NONE.

dwOptions
Opciones de la clave. El valor predeterminado es REG_OPTION_NON_VOLATILE. Para ver una lista de valores posibles y sus descripciones, consulte RegCreateKeyEx en Windows SDK.

samDesired
Acceso de seguridad de la clave. El valor predeterminado es KEY_READ | KEY_WRITE. Para ver una lista de valores posibles y sus descripciones, consulte RegCreateKeyEx.

lpSecAttr
Puntero a una estructura SECURITY_ATTRIBUTES que indica si un proceso secundario puede heredar el manipulador de la clave. De forma predeterminada, este parámetro es NULL (lo que significa que el identificador no se puede heredar).

lpdwDisposition
[out] Si no es NULL, recupera REG_CREATED_NEW_KEY (si la clave no existía y se creó) o REG_OPENED_EXISTING_KEY (si la clave existía y se abrió).

Valor devuelto

Si se ejecuta correctamente, devuelve ERROR_SUCCESS y abre la clave. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Create establece el miembro m_hKey en el manipulador de esta clave.

CRegKey::CRegKey

Constructor .

CRegKey() throw();
CRegKey(CRegKey& key) throw();
explicit CRegKey(HKEY hKey) throw();
CRegKey(CAtlTransactionManager* pTM) throw();

Parámetros

key
Referencia a un objeto CRegKey.

hKey
Manipulador de una clave del Registro.

pTM
Puntero al objeto CAtlTransactionManager

Comentarios

Crea un nuevo objeto CRegKey. El objeto se puede crear a partir de un objeto CRegKey existente o de un manipulador de una clave del Registro.

CRegKey::~CRegKey

El destructor .

~CRegKey() throw();

Comentarios

El destructor libera m_hKey.

CRegKey::DeleteSubKey

Llame a este método para quitar la clave especificada del Registro.

LONG DeleteSubKey(LPCTSTR lpszSubKey) throw();

Parámetros

lpszSubKey
Especifica el nombre de la clave que se va a eliminar. Este nombre debe ser una subclave de m_hKey.

Valor devuelto

Si la operación se realiza correctamente, devuelve ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

DeleteSubKey solo puede eliminar una clave que no tenga subclaves. Si la clave tiene subclaves, llame a RecurseDeleteKey en su lugar.

CRegKey::DeleteValue

Llame a este método para quitar un campo de valor de m_hKey.

LONG DeleteValue(LPCTSTR lpszValue) throw();

Parámetros

lpszValue
Especifica el campo de valor que se va a quitar.

Valor devuelto

Si la operación se realiza correctamente, devuelve ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

CRegKey::Detach

Llame a este método para desasociar el manipulador del miembro m_hKey del objeto CRegKey y establecer m_hKey en NULL.

HKEY Detach() throw();

Valor devuelto

Elemento HKEY asociado al objeto CRegKey.

CRegKey::EnumKey

Llame a este método para enumerar las subclaves de la clave del Registro abierta.

LONG EnumKey(
    DWORD iIndex,
    LPTSTR pszName,
    LPDWORD pnNameLength,
    FILETIME* pftLastWriteTime = NULL) throw();

Parámetros

iIndex
Índice de la subclave. Este parámetro debe ser cero para la primera llamada y, a continuación, incrementarse para las llamadas posteriores.

pszName
Puntero a un búfer que recibe el nombre de la subclave, incluido el carácter nulo de terminación. Solo se copia en el búfer el nombre de la subclave, no la jerarquía de claves completa.

pnNameLength
Puntero a una variable que especifica el tamaño, en TCHARs, del búfer especificado por el parámetro pszName. El tamaño debe incluir el carácter nulo de terminación. Cuando el método vuelve, la variable a la que apunta pnNameLength contiene el número de caracteres almacenados en el búfer. El recuento devuelto no incluye el carácter nulo de terminación.

pftLastWriteTime
Puntero a una variable que recibe la hora en la que se escribió por última vez la subclave enumerada.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Para enumerar las subclaves, llame a CRegKey::EnumKey con un índice de valor cero. Incremente el valor de índice y repita hasta que el método devuelva ERROR_NO_MORE_ITEMS. Para más información, consulte RegEnumKeyEx en Windows SDK.

CRegKey::Flush

Llame a este método para escribir todos los atributos de la clave del Registro abierta en el Registro.

LONG Flush() throw();

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Para más información, consulte RegEnumFlush en Windows SDK.

CRegKey::GetKeySecurity

Llame a este método para recuperar una copia del descriptor de seguridad que protege la clave del Registro abierta.

LONG GetKeySecurity(
    SECURITY_INFORMATION si,
    PSECURITY_DESCRIPTOR psd,
    LPDWORD pnBytes) throw();

Parámetros

si
Valor de tipo SECURITY_INFORMATION que indica la información de seguridad solicitada.

psd
Puntero a un búfer que recibe una copia del descriptor de seguridad solicitado.

pnBytes
Tamaño, en bytes, del búfer al que apunta psd.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Para obtener más información, vea RegGetKeySecurity.

CRegKey::m_hKey

Contiene un manipulador de la clave del Registro asociada al objeto CRegKey.

HKEY m_hKey;

CRegKey::m_pTM

Un puntero a un objeto CAtlTransactionManager.

CAtlTransactionManager* m_pTM;

Comentarios

CRegKey::NotifyChangeKeyValue

Este método notifica al autor de la llamada los cambios realizados en los atributos o el contenido de la clave del Registro abierta.

LONG NotifyChangeKeyValue(
    BOOL bWatchSubtree,
    DWORD dwNotifyFilter,
    HANDLE hEvent,
    BOOL bAsync = TRUE) throw();

Parámetros

bWatchSubtree
Especifica una marca que indica si se deben notificar los cambios en la clave especificada y en todas sus subclaves o solo en la clave especificada. Si este parámetro es TRUE, el método notifica los cambios en la clave y sus subclaves. Si el parámetro es FALSE, el método solo notifica los cambios en la clave.

dwNotifyFilter
Especifica un conjunto de marcas que controlan qué cambios se deben notificar. Este parámetro puede ser una combinación de los siguientes valores:

Valor Significado
REG_NOTIFY_CHANGE_NAME Notificar al autor de la llamada si se agrega o elimina una subclave.
REG_NOTIFY_CHANGE_ATTRIBUTES Notificar al autor de la llamada los cambios en los atributos de la clave, como la información del descriptor de seguridad.
REG_NOTIFY_CHANGE_LAST_SET Notificar al autor de la llamada los cambios en un valor de la clave. Esto puede incluir agregar o eliminar un valor, o cambiar un valor existente.
REG_NOTIFY_CHANGE_SECURITY Notificar al autor de la llamada los cambios en el descriptor de seguridad de la clave.

hEvent
Identificador para un evento. Si el parámetro bAsync es TRUE, el método vuelve inmediatamente y los cambios se notifican mediante la señalización de este evento. Si bAsync es FALSE, hEvent se omite.

bAsync
Especifica una marca que indica cómo notifica el método los cambios. Si este parámetro es TRUE, el método vuelve inmediatamente y notifica los cambios mediante la señalización del evento especificado. Cuando este parámetro es FALSE, el método no vuelve hasta que se ha producido un cambio. Si hEvent no especifica un evento válido, el bAsync parámetro no puede ser TRUE.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Nota:

Este método no notifica al autor de la llamada si se elimina la clave especificada.

Para obtener más información y un programa de ejemplo, consulte RegNotifyChangeKeyValue.

CRegKey::Open

Llame a este método para abrir la clave especificada y establecer m_hKey en el manipulador de esta clave.

LONG Open(
    HKEY hKeyParent,
    LPCTSTR lpszKeyName,
    REGSAM samDesired = KEY_READ | KEY_WRITE) throw();

Parámetros

hKeyParent
Manipulador de una clave abierta.

lpszKeyName
Especifica el nombre de una clave que se va a crear o abrir. Este nombre debe ser una subclave de hKeyParent.

samDesired
Acceso de seguridad de la clave. El valor predeterminado es KEY_ALL_ACCESS. Para ver una lista de valores posibles y sus descripciones, consulte RegCreateKeyEx en Windows SDK.

Valor devuelto

Si se ejecuta correctamente, devuelve ERROR_SUCCESS; de lo contrario, devuelve un valor de error distinto de cero definido en WINERROR.H.

Comentarios

Si el parámetro lpszKeyName es NULL o apunta a una cadena vacía, Open abre un nuevo manipulador de la clave identificada por hKeyParent, pero no cierra ningún manipulador abierto previamente.

A diferencia de CRegKey::Create, Open no creará la clave especificada si no existe.

CRegKey::operator HKEY

Convierte un objeto CRegKey en un objeto HKEY.

operator HKEY() const throw();

CRegKey::operator =

Operador de asignación.

CRegKey& operator= (CRegKey& key) throw();

Parámetros

key
Clave que se va a copiar.

Valor devuelto

Devuelve una referencia a la nueva clave.

Comentarios

Este operador desasocia el elemento key de su objeto actual y lo asigna al objeto CRegKey en su lugar.

CRegKey::QueryBinaryValue

Llame a este método para recuperar los datos binarios de un nombre de valor especificado.

LONG QueryBinaryValue(
    LPCTSTR pszValueName,
    void* pValue,
    ULONG* pnBytes) throw();

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar.

pValue
Puntero a un búfer que recibe los datos del valor.

pnBytes
Puntero a una variable que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pValue. Cuando el método vuelve, esta variable contiene el tamaño de los datos copiados en el búfer.

Valor devuelto

Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H. Si los datos a los que se hace referencia no son de tipo REG_BINARY, se devuelve ERROR_INVALID_DATA.

Comentarios

Este método utiliza RegQueryValueEx y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx para obtener más detalles.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

CRegKey::QueryDWORDValue

Llame a este método para recuperar los datos de tipo DWORD de un nombre de valor especificado.

LONG QueryDWORDValue(
    LPCTSTR pszValueName,
    DWORD& dwValue) throw();

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar.

dwValue
Puntero a un búfer que recibe el elemento DWORD.

Valor devuelto

Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H. Si los datos a los que se hace referencia no son de tipo REG_DWORD, se devuelve ERROR_INVALID_DATA.

Comentarios

Este método utiliza RegQueryValueEx y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx para obtener más detalles.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

CRegKey::QueryGUIDValue

Llame a este método para recuperar los datos de tipo GUID de un nombre de valor especificado.

LONG QueryGUIDValue(
    LPCTSTR pszValueName,
    GUID& guidValue) throw();

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar.

guidValue
Puntero a una variable que recibe el GUID.

Valor devuelto

Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H. Si los datos a los que se hace referencia no son un GUID válido, se devuelve ERROR_INVALID_DATA.

Comentarios

Este método usa CRegKey::QueryStringValue y convierte la cadena en un GUID mediante CLSIDFromString.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza.

CRegKey::QueryMultiStringValue

Llame a este método para recuperar los datos de tipo cadena múltiple de un nombre de valor especificado.

LONG QueryMultiStringValue(
    LPCTSTR pszValueName,
    LPTSTR pszValue,
    ULONG* pnChars) throw();

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar.

pszValue
Puntero a un búfer que recibe los datos de cadena múltiple. Una cadena múltiple es una matriz de cadenas terminadas en NULL y terminada por dos caracteres NULL.

pnChars
Tamaño, en TCHARs, del búfer al que apunta pszValue. Cuando el método vuelve, pnChars contiene el tamaño, en TCHARs, de la cadena múltiple recuperada, incluido un carácter nulo de terminación.

Valor devuelto

Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H. Si los datos a los que se hace referencia no son de tipo REG_MULTI_SZ, se devuelve ERROR_INVALID_DATA.

Comentarios

Este método utiliza RegQueryValueEx y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx para obtener más detalles.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

CRegKey::QueryQWORDValue

Llame a este método para recuperar los datos de tipo QWORD de un nombre de valor especificado.

LONG QueryQWORDValue(
    LPCTSTR pszValueName,
    ULONGLONG& qwValue) throw();

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar.

qwValue
Puntero a un búfer que recibe el elemento QWORD.

Valor devuelto

Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H. Si los datos a los que se hace referencia no son de tipo REG_QWORD, se devuelve ERROR_INVALID_DATA.

Comentarios

Este método utiliza RegQueryValueEx y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx para obtener más detalles.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

CRegKey::QueryStringValue

Llame a este método para recuperar los datos de tipo cadena de un nombre de valor especificado.

LONG QueryStringValue(
    LPCTSTR pszValueName,
    LPTSTR pszValue,
    ULONG* pnChars) throw();

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar.

pszValue
Puntero a un búfer que recibe los datos de cadena.

pnChars
Tamaño, en TCHAR, del búfer al que apunta pszValue. Cuando el método vuelve, pnChars contiene el tamaño, en TCHARs, de la cadena recuperada, incluido un carácter nulo de terminación.

Valor devuelto

Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H. Si los datos a los que se hace referencia no son de tipo REG_SZ, se devuelve ERROR_INVALID_DATA. Si el método devuelve ERROR_MORE_DATA, pnChars es igual a cero, no el tamaño de búfer necesario en bytes.

Comentarios

Este método utiliza RegQueryValueEx y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx para obtener más detalles.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

CRegKey::QueryValue

Llame a este método para recuperar los datos del campo de valor especificado de m_hKey. Las versiones anteriores de este método ya no se admiten y se marcan como ATL_DEPRECATED.

LONG QueryValue(
    LPCTSTR pszValueName,
    DWORD* pdwType,
    void* pData,
    ULONG* pnBytes) throw();

ATL_DEPRECATED LONG QueryValue(
    DWORD& dwValue,
    LPCTSTR lpszValueName);

ATL_DEPRECATED LONG QueryValue(
    LPTSTR szValue,
    LPCTSTR lpszValueName,
    DWORD* pdwCount);

Parámetros

pszValueName
Puntero a una cadena terminada en NULL que contiene el nombre del valor que se va a consultar. Si pszValueName es NULL o una cadena vacía, "", el método recupera el tipo y los datos del valor predeterminado o sin nombre de la clave, si existe.

pdwType
Puntero a una variable que recibe un código que indica el tipo de datos almacenados en el valor especificado. El parámetro pdwType puede ser NULL si el código de tipo no es necesario.

pData
Puntero a un búfer que recibe los datos del valor. Este parámetro puede ser NULL si los datos no son necesarios.

pnBytes
Puntero a una variable que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pData. Cuando el método vuelve, esta variable contiene el tamaño de los datos copiados en pData.

dwValue
Datos numéricos del campo de valor.

lpszValueName
Especifica el campo de valor que se va a consultar.

szValue
Datos de cadena del campo de valor.

pdwCount
Tamaño de los datos de cadena. Su valor se establece inicialmente en el tamaño del búfer szValue.

Valor devuelto

Si se ejecuta correctamente, devuelve ERROR_SUCCESS; de lo contrario, devuelve un código de error distinto de cero definido en WINERROR.H.

Comentarios

Las dos versiones originales de QueryValue ya no se admiten y se marcan como ATL_DEPRECATED. El compilador emitirá una advertencia si se usan estas formas.

El método restante llama a RegQueryValueEx.

Importante

Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.

CRegKey::RecurseDeleteKey

Llame a este método para quitar la clave especificada del Registro y quitar explícitamente las subclaves.

LONG RecurseDeleteKey(LPCTSTR lpszKey) throw();

Parámetros

lpszKey
Especifica el nombre de la clave que se va a eliminar. Este nombre debe ser una subclave de m_hKey.

Valor devuelto

Si se ejecuta correctamente, devuelve ERROR_SUCCESS; de lo contrario, devuelve un valor de error distinto de cero definido en WINERROR.H.

Comentarios

Si la clave tiene subclaves, debe llamar a este método para eliminar la clave.

CRegKey::SetBinaryValue

Llame a este método para establecer el valor binario de la clave del Registro.

LONG SetBinaryValue(
    LPCTSTR pszValueName,
    const void* pValue,
    ULONG nBytes) throw();

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.

pValue
Puntero a un búfer que contiene los datos que se van a almacenar con el nombre de valor especificado.

nBytes
Especifica el tamaño, en bytes, de la información a la que apunta el parámetro pValue.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Este método usa RegSetValueEx para escribir el valor en el Registro.

CRegKey::SetDWORDValue

Llame a este método para establecer el valor DWORD de la clave del Registro.

LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue) throw();

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.

dwValue
Datos de tipo DWORD que se van a almacenar con el nombre de valor especificado.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Este método usa RegSetValueEx para escribir el valor en el Registro.

CRegKey::SetGUIDValue

Llame a este método para establecer el valor GUID de la clave del Registro.

LONG SetGUIDValue(LPCTSTR pszValueName, REFGUID guidValue) throw();

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.

guidValue
Referencia al GUID que se va a almacenar con el nombre de valor especificado.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Este método usa CRegKey::SetStringValue y convierte el GUID en una cadena mediante StringFromGUID2.

CRegKey::SetKeyValue

Llame a este método para almacenar datos en un campo de valor especificado de una clave especificada.

LONG SetKeyValue(
    LPCTSTR lpszKeyName,
    LPCTSTR lpszValue,
    LPCTSTR lpszValueName = NULL) throw();

Parámetros

lpszKeyName
Especifica el nombre de la clave que se va a crear o abrir. Este nombre debe ser una subclave de m_hKey.

lpszValue
Especifica los datos que se van a almacenar. Este parámetro debe ser distinto de NULL.

lpszValueName
Especifica el campo de valor que se va a establecer. Si aún no existe un campo de valor con este nombre en la clave, se agrega.

Valor devuelto

Si se ejecuta correctamente, devuelve ERROR_SUCCESS; de lo contrario, devuelve un código de error distinto de cero definido en WINERROR.H.

Comentarios

Llame a este método para crear o abrir la clave lpszKeyName y almacenar los datos de lpszValue en el campo de valor lpszValueName.

CRegKey::SetKeySecurity

Llame a este método para establecer la seguridad de la clave del Registro.

LONG SetKeySecurity(SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR psd) throw();

Parámetros

si
Especifica los componentes del descriptor de seguridad que se va a establecer. El valor puede ser una combinación de los valores siguientes:

Valor Significado
DACL_SECURITY_INFORMATION Establece la lista de control de acceso discrecional (DACL) de la clave. La clave debe tener acceso WRITE_DAC o el proceso que realiza la llamada debe ser el propietario del objeto.
GROUP_SECURITY_INFORMATION Establece el identificador de seguridad (SID) del grupo principal de la clave. La clave debe tener acceso WRITE_OWNER o el proceso que realiza la llamada debe ser el propietario del objeto.
OWNER_SECURITY_INFORMATION Establece el SID del propietario de la clave. La clave debe tener acceso WRITE_OWNER o el proceso que realiza la llamada debe ser el propietario del objeto o tener habilitado el privilegio SE_TAKE_OWNERSHIP_NAME.
SACL_SECURITY_INFORMATION Establece la lista de control de acceso del sistema (SACL) de la clave. La clave debe tener acceso ACCESS_SYSTEM_SECURITY. La manera adecuada de obtener este acceso es habilitar el SE_SECURITY_NAME privilegio en el token de acceso actual del autor de la llamada, abrir el identificador de ACCESS_SYSTEM_SECURITY acceso y, a continuación, deshabilitar el privilegio.

psd
Puntero a una estructura SECURITY_DESCRIPTOR que especifica los atributos de seguridad que se van a establecer para la clave especificada.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Establece los atributos de seguridad de la clave. Consulte RegSetKeySecurity para obtener más detalles.

CRegKey::SetMultiStringValue

Llame a este método para establecer el valor de cadena múltiple de la clave del Registro.

LONG SetMultiStringValue(LPCTSTR pszValueName, LPCTSTR pszValue) throw();

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.

pszValue
Puntero a los datos de cadena múltiple que se van a almacenar con el nombre de valor especificado. Una cadena múltiple es una matriz de cadenas terminadas en NULL y terminada por dos caracteres NULL.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Este método usa RegSetValueEx para escribir el valor en el Registro.

CRegKey::SetQWORDValue

Llame a este método para establecer el valor QWORD de la clave del Registro.

LONG SetQWORDValue(LPCTSTR pszValueName, ULONGLONG qwValue) throw();

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.

qwValue
Datos de tipo QWORD que se van a almacenar con el nombre de valor especificado.

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Este método usa RegSetValueEx para escribir el valor en el Registro.

CRegKey::SetStringValue

Llame a este método para establecer el valor de cadena de la clave del Registro.

LONG SetStringValue(
    LPCTSTR pszValueName,
    LPCTSTR pszValue,
    DWORD dwType = REG_SZ) throw();

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.

pszValue
Puntero a los datos de cadena que se van a almacenar con el nombre de valor especificado.

dwType
Tipo de la cadena que se va a escribir en el Registro: REG_SZ (valor predeterminado) o REG_EXPAND_SZ (para cadenas múltiples).

Valor devuelto

Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H.

Comentarios

Este método usa RegSetValueEx para escribir el valor en el Registro.

CRegKey::SetValue

Llame a este método para almacenar datos en el campo de valor especificado de m_hKey. Las versiones anteriores de este método ya no se admiten y se marcan como ATL_DEPRECATED.

LONG SetValue(
    LPCTSTR pszValueName,
    DWORD dwType,
    const void* pValue,
    ULONG nBytes) throw();

static LONG WINAPI SetValue(
    HKEY hKeyParent,
    LPCTSTR lpszKeyName,
    LPCTSTR lpszValue,
    LPCTSTR lpszValueName = NULL);

ATL_DEPRECATED LONG SetValue(
    DWORD dwValue,
    LPCTSTR lpszValueName);

ATL_DEPRECATED LONG SetValue(
    LPCTSTR lpszValue,
    LPCTSTR lpszValueName = NULL,
    bool bMulti = false,
    int nValueLen = -1);

Parámetros

pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no está presente en la clave un valor con este nombre, el método lo agrega a la clave. Si pszValueName es NULL o una cadena vacía, "", el método establece el tipo y los datos del valor predeterminado o sin nombre de la clave.

dwType
Especifica un código que indica el tipo de datos al que apunta el parámetro pValue.

pValue
Puntero a un búfer que contiene los datos que se van a almacenar con el nombre de valor especificado.

nBytes
Especifica el tamaño, en bytes, de la información a la que apunta el parámetro pValue. Si los datos son de tipo REG_SZ, REG_EXPAND_SZ o REG_MULTI_SZ, nBytes debe incluir el tamaño del carácter nulo de terminación.

hKeyParent
Manipulador de una clave abierta.

lpszKeyName
Especifica el nombre de una clave que se va a crear o abrir. Este nombre debe ser una subclave de hKeyParent.

lpszValue
Especifica los datos que se van a almacenar. Este parámetro debe ser distinto de NULL.

lpszValueName
Especifica el campo de valor que se va a establecer. Si aún no existe un campo de valor con este nombre en la clave, se agrega.

dwValue
Especifica los datos que se van a almacenar.

bMulti
Si es false, indica que la cadena es de tipo REG_SZ. Si es true, indica que la cadena es una cadena múltiple de tipo REG_MULTI_SZ.

nValueLen
Si bMulti es true, nValueLen es la longitud de la cadena lpszValue en caracteres. Si bMulti es false, un valor de -1 indica que el método calculará la longitud automáticamente.

Valor devuelto

Si se ejecuta correctamente, devuelve ERROR_SUCCESS; de lo contrario, devuelve un código de error distinto de cero definido en WINERROR.H.

Comentarios

Las dos versiones originales de SetValue se marcan como ATL_DEPRECATED y ya no se deben usar. El compilador emitirá una advertencia si se usan estas formas.

El tercer método llama a RegSetValueEx.

Consulte también

Ejemplo de DCOM
Información general sobre la clase