Partilhar via


Classe CRegKey

Essa classe fornece métodos para manipular entradas no Registro do sistema.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class CRegKey

Membros

Construtores públicos

Nome Descrição
CRegKey::CRegKey O construtor .
CRegKey::~CRegKey O destruidor.

Métodos públicos

Nome Descrição
CRegKey::Attach Chame esse método para anexar um HKEY ao objeto CRegKey ao definir o identificador do membro m_hKey para hKey.
CRegKey::Close Chame esse método para liberar o identificador m_hKey do membro e defini-lo como NULL.
CRegKey::Create Chame esse método para criar a chave especificada, se ela não existir como uma subchave de hKeyParent.
CRegKey::DeleteSubKey Chame esse método para remover a chave especificada do registro.
CRegKey::DeleteValue Chame esse método para remover um campo de valor de m_hKey.
CRegKey::Detach Chame esse método para desanexar o identificador m_hKey do membro do objeto CRegKey e definir m_hKey como NULL.
CRegKey::EnumKey Chame esse método para enumerar as subchaves da chave aberta do registro.
CRegKey::Flush Chame esse método para gravar todos os atributos da chave aberta do registro no registro.
CRegKey::GetKeySecurity Chame esse método para recuperar uma cópia do descritor de segurança que protege a chave aberta do registro.
CRegKey::NotifyChangeKeyValue Esse método notifica o chamador sobre alterações nos atributos ou conteúdo da chave aberta do registro.
CRegKey::Open Chame esse método para abrir a chave especificada e definir m_hKey como o identificador dessa chave.
CRegKey::QueryBinaryValue Chame esse método para recuperar os dados binários para um nome de valor especificado.
CRegKey::QueryDWORDValue Chame esse método para recuperar os dados DWORD para um nome de valor especificado.
CRegKey::QueryGUIDValue Chame esse método para recuperar os dados de GUID para um nome de valor especificado.
CRegKey::QueryMultiStringValue Chame esse método para recuperar os dados de cadeia de caracteres múltipla para um nome de valor especificado.
CRegKey::QueryQWORDValue Chame esse método para recuperar os dados QWORD para um nome de valor especificado.
CRegKey::QueryStringValue Chame esse método para recuperar os dados de cadeias de caracteres para um nome de valor especificado.
CRegKey::QueryValue Chame esse método para recuperar os dados do campo de valor especificado de m_hKey. Versões anteriores desse método não têm mais suporte e são marcadas como ATL_DEPRECATED.
CRegKey::RecurseDeleteKey Chame esse método para remover a chave especificada do registro e remover explicitamente as subchaves.
CRegKey::SetBinaryValue Chame esse método para definir o valor binário da chave do registro.
CRegKey::SetDWORDValue Chame esse método para definir o valor DWORD da chave do registro.
CRegKey::SetGUIDValue Chame esse método para definir o valor de GUID da chave do registro.
CRegKey::SetKeySecurity Chame esse método para definir a segurança da chave do registro.
CRegKey::SetKeyValue Chame esse método para armazenar dados em um campo de valor especificado de uma chave especificada.
CRegKey::SetMultiStringValue Chame esse método para definir o valor de cadeia de caracteres múltipla da chave do registro.
CRegKey::SetQWORDValue Chame esse método para definir o valor QWORD da chave do registro.
CRegKey::SetStringValue Chame esse método para definir o valor de cadeias de caracteres da chave do registro.
CRegKey::SetValue Chame esse método para armazenar dados no campo de valor especificado de m_hKey. Versões anteriores desse método não têm mais suporte e são marcadas como ATL_DEPRECATED.

Operadores públicos

Nome Descrição
CRegKey::operator HKEY Converte um objeto CRegKey em um HKEY.
CRegKey::operator = Operador de atribuição.

Membros de Dados Públicos

Nome Descrição
CRegKey::m_hKey Contém um identificador da chave do registro associada ao objeto CRegKey.
CRegKey::m_pTM Ponteiro para o objeto CAtlTransactionManager

Comentários

CRegKey fornece métodos para criar e excluir chaves e valores no registro do sistema. O registro contém um conjunto específico de definições de instalação para componentes do sistema, como números de versão de software, mapeamentos lógicos para físicos de hardware instalado e objetos COM.

CRegKey fornece uma interface de programação para o registro do sistema para um determinado computador. Por exemplo, para abrir uma chave específica do registro, chame CRegKey::Open. Para recuperar ou modificar um valor de dados, chame CRegKey::QueryValue ou CRegKey::SetValue, respectivamente. Para fechar uma chave, chame CRegKey::Close.

Ao fechar uma chave, os dados do registro são gravados (liberados) no disco rígido. Esse processo pode demorar vários segundos. Se o aplicativo precisar gravar explicitamente dados do Registro no disco rígido, você poderá chamar a função RegFlushKey do Win32. No entanto, RegFlushKey usa muitos recursos do sistema e deve ser chamado somente quando absolutamente necessário.

Importante

Todos os métodos que permitem que o chamador especifique um local do registro têm o potencial de ler dados que não são confiáveis. Os métodos usam RegQueryValueEx devem levar em consideração que essa função não manipula explicitamente cadeias de caracteres que são encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

Requisitos

Cabeçalho: atlbase.h

CRegKey::Attach

Chame esse método para anexar um HKEY ao objeto CRegKey ao definir o identificador do membro m_hKey para hKey.

void Attach(HKEY hKey) throw();

Parâmetros

hKey
O identificador de uma chave do registro.

Comentários

Attach afirmará se m_hKey não for NULL.

CRegKey::Close

Chame esse método para liberar o identificador m_hKey do membro e defini-lo como NULL.

LONG Close() throw();

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS; caso contrário, retornará um valor de erro.

CRegKey::Create

Chame esse método para criar a chave especificada, se ela não existir como uma subchave 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
O identificador de uma chave aberta.

lpszKeyName
Especifica o nome de uma chave a ser criada ou aberta. Esse nome precisa ser uma subchave de hKeyParent.

lpszClass
Especifica a classe da chave a ser criada ou aberta. O valor padrão é REG_NONE.

dwOptions
Opções para a chave. O valor padrão é REG_OPTION_NON_VOLATILE. Para obter uma lista de possíveis valores e descrições, confira RegCreateKeyEx no SDK do Windows.

samDesired
O acesso de segurança da chave. O valor padrão é KEY_READ | KEY_WRITE. Para obter uma lista de possíveis valores e descrições, confira RegCreateKeyEx.

lpSecAttr
Um ponteiro para uma estrutura SECURITY_ATTRIBUTES que indica se o identificador da chave pode ser herdado por um processo filho. Por padrão, esse parâmetro é NULL (o que significa que o identificador não pode ser herdado).

lpdwDisposition
[out] Se não for NULL, recuperará REG_CREATED_NEW_KEY (se a chave não existir e tiver sido criada) ou REG_OPENED_EXISTING_KEY (se a chave existir e for aberta).

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS e abrirá a chave. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Create define o m_hKey membro como o identificador dessa chave.

CRegKey::CRegKey

O construtor .

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

Parâmetros

key
Uma referência a um objeto CRegKey.

hKey
Um identificador de uma chave do registro.

pTM
Ponteiro para o objeto CAtlTransactionManager

Comentários

Cria um novo objeto CRegKey. O objeto pode ser criado de um objeto CRegKey existente ou de um identificador para uma chave do registro.

CRegKey::~CRegKey

O destruidor.

~CRegKey() throw();

Comentários

O destruidor é libera m_hKey.

CRegKey::DeleteSubKey

Chame esse método para remover a chave especificada do registro.

LONG DeleteSubKey(LPCTSTR lpszSubKey) throw();

Parâmetros

lpszSubKey
Especifica o nome da chave a ser excluída. Esse nome precisa ser uma subchave de m_hKey.

Valor de retorno

Se for bem-sucedido, retornará ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

DeleteSubKey só pode excluir uma chave que não tenha subchave. Se a chave tiver subchaves, chame RecurseDeleteKey em vez disso.

CRegKey::DeleteValue

Chame esse método para remover um campo de valor de m_hKey.

LONG DeleteValue(LPCTSTR lpszValue) throw();

Parâmetros

lpszValue
Especifica o campo de valor a ser removido.

Valor de retorno

Se for bem-sucedido, retornará ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

CRegKey::Detach

Chame esse método para desanexar o identificador m_hKey do membro do objeto CRegKey e definir m_hKey como NULL.

HKEY Detach() throw();

Valor de retorno

O HKEY associado ao objeto CRegKey.

CRegKey::EnumKey

Chame esse método para enumerar as subchaves da chave aberta do registro.

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

Parâmetros

iIndex
O índice de subchave. Esse parâmetro deve ser zero para a primeira chamada e incrementado para chamadas subsequentes

pszName
Ponteiro para um buffer que recebe o nome da subchave, incluindo o caractere nulo de terminação. Somente o nome da subchave é copiado para o buffer, não para a hierarquia de chave completa.

pnNameLength
Ponteiro para uma variável que especifica o tamanho, em TCHARs, do buffer especificado pelo parâmetro pszName. Esse tamanho deve incluir o caractere nulo de terminação. Quando o método retorna, a variável apontada por pnNameLength contém o número de caracteres armazenados no buffer. A contagem retornada não inclui o caractere nulo de terminação.

pftLastWriteTime
Ponteiro para uma variável que recebe a hora em que a subchave enumerada foi gravada pela última vez.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Para enumerar as subchaves, chame CRegKey::EnumKey com um índice de zero. Incremente o valor do índice e repita até que o método retorne ERROR_NO_MORE_ITEMS. Para obter mais informações, consulte RegEnumKeyEx no SDK do Windows.

CRegKey::Flush

Chame esse método para gravar todos os atributos da chave aberta do registro no registro.

LONG Flush() throw();

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Para obter mais informações, consulte RegEnumFlush no SDK do Windows.

CRegKey::GetKeySecurity

Chame esse método para recuperar uma cópia do descritor de segurança que protege a chave aberta do registro.

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

Parâmetros

si
O valor SECURITY_INFORMATION que indica as informações de segurança solicitadas.

psd
Um ponteiro para um buffer que recebe uma cópia do descritor de segurança solicitado.

pnBytes
O tamanho, em bytes, do buffer apontado por psd.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Para obter mais informações, consulte RegGetKeySecurity.

CRegKey::m_hKey

Contém um identificador da chave do registro associada ao objeto CRegKey.

HKEY m_hKey;

CRegKey::m_pTM

Ponteiro para um objeto CAtlTransactionManager.

CAtlTransactionManager* m_pTM;

Comentários

CRegKey::NotifyChangeKeyValue

Esse método notifica o chamador sobre alterações nos atributos ou conteúdo da chave aberta do registro.

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

Parâmetros

bWatchSubtree
Especifica um sinalizador que indica se deve relatar alterações na chave especificada e em todas as subchaves ou somente na chave especificada. Se esse parâmetro for TRUE, o método relatará alterações na chave e em suas subchaves. Se o parâmetro for FALSE, o método relatará alterações apenas na chave.

dwNotifyFilter
Especifica um conjunto de sinalizadores que controlam quais alterações devem ser relatadas. Esse parâmetro pode ser uma combinação dos seguintes valores:

Valor Significado
REG_NOTIFY_CHANGE_NAME Notifique o chamador se uma subchave for adicionada ou excluída.
REG_NOTIFY_CHANGE_ATTRIBUTES Notifique o chamador de alterações nos atributos da chave, como as informações do descritor de segurança.
REG_NOTIFY_CHANGE_LAST_SET Notifique o chamador de alterações para um valor da chave. Isso pode incluir a adição ou exclusão de um valor ou a alteração de um valor existente.
REG_NOTIFY_CHANGE_SECURITY Notifique o chamador de alterações ao descritor de segurança da chave.

hEvent
Identificador de um evento. Se o parâmetro bAsync for TRUE, o método retornará imediatamente e as alterações serão relatadas sinalizando esse evento. Se bAsync for FALSE, hEvent será ignorado.

bAsync
Especifica um sinalizador que indica como o método relata alterações. Se esse parâmetro for TRUE, o método retornará imediatamente e relatará alterações sinalizando o evento especificado. Quando esse parâmetro é FALSE, o método não retorna até que ocorra uma alteração. Se hEvent não especificar um evento válido, o bAsync parâmetro não poderá ser TRUE.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Observação

Esse método não notificará o chamador se a chave especificada for excluída.

Para obter mais detalhes e um programa de exemplo, confira RegNotifyChangeKeyValue.

CRegKey::Open

Chame esse método para abrir a chave especificada e definir m_hKey como o identificador dessa chave.

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

Parâmetros

hKeyParent
O identificador de uma chave aberta.

lpszKeyName
Especifica o nome de uma chave a ser criada ou aberta. Esse nome precisa ser uma subchave de hKeyParent.

samDesired
O acesso de segurança da chave. O valor padrão é KEY_ALL_ACCESS. Para obter uma lista de possíveis valores e descrições, confira RegCreateKeyEx no SDK do Windows.

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS. Caso contrário, um valor de erro não zero definido em WINERROR.H.

Comentários

Se o parâmetro lpszKeyName for NULL ou apontar para uma cadeia de caracteres vazia, Open abrirá um novo identificador da chave identificada por hKeyParent, mas não fechará nenhum identificador aberto anteriormente.

Ao contrário de CRegKey::Create, Open não criará a chave especificada se ela não existir.

CRegKey::operator HKEY

Converte um objeto CRegKey em um HKEY.

operator HKEY() const throw();

CRegKey::operator =

Operador de atribuição.

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

Parâmetros

key
A chave a ser verificada.

Valor de retorno

Retorna uma referência à nova chave.

Comentários

Esse operador se desanexa key do objeto atual e o atribui ao objeto CRegKey.

CRegKey::QueryBinaryValue

Chame esse método para recuperar os dados binários para um nome de valor especificado.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado.

pValue
Um ponteiro para um buffer que recebe os dados do valor.

pnBytes
Ponteiro para uma variável que especifica o tamanho, em bytes, do buffer que apontado pelo parâmetro pValue. Quando o método retorna, essa variável contém o tamanho dos dados copiados para o buffer.

Valor de retorno

Se o método for bem-sucedido, retornará ERROR_SUCCESS. Se o método não ler um valor, ele retornará um código de erro não zero definido em WINERROR.H. Se os dados referenciados não forem do tipo REG_BINARY, ERROR_INVALID_DATA é retornado.

Comentários

Esse método usa RegQueryValueEx e confirma que o tipo correto de dados é retornado. Confira RegQueryValueEx para saber mais.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis. Além disso, a função RegQueryValueEx usada por esse método não manipula explicitamente cadeias de caracteres encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

CRegKey::QueryDWORDValue

Chame esse método para recuperar os dados DWORD para um nome de valor especificado.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado.

dwValue
Ponteiro para um buffer que recebe o DWORD.

Valor de retorno

Se o método for bem-sucedido, retornará ERROR_SUCCESS. Se o método não ler um valor, ele retornará um código de erro não zero definido em WINERROR.H. Se os dados referenciados não forem do tipo REG_DWORD, ERROR_INVALID_DATA é retornado.

Comentários

Esse método usa RegQueryValueEx e confirma que o tipo correto de dados é retornado. Confira RegQueryValueEx para saber mais.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis. Além disso, a função RegQueryValueEx usada por esse método não manipula explicitamente cadeias de caracteres encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

CRegKey::QueryGUIDValue

Chame esse método para recuperar os dados de GUID para um nome de valor especificado.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado.

guidValue
Um ponteiro para uma variável que recebe o GUID.

Valor de retorno

Se o método for bem-sucedido, retornará ERROR_SUCCESS. Se o método não ler um valor, ele retornará um código de erro não zero definido em WINERROR.H. Se os dados referenciados não forem um GUID válido, ERROR_INVALID_DATA é retornado.

Comentários

Esse método usa CRegKey::QueryStringValue e converte a cadeia de caracteres em um GUID usando CLSIDFromString.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis.

CRegKey::QueryMultiStringValue

Chame esse método para recuperar os dados de cadeia de caracteres múltipla para um nome de valor especificado.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado.

pszValue
Ponteiro para um buffer que recebe a cadeia de caracteres múltipla. Uma cadeia de caracteres múltipla é uma matriz de cadeias de caracteres terminadas em NULL, terminadas com dois caracteres nulos.

pnChars
O tamanho, em pszValue, do buffer apontado por TCHARs. Quando o método retorna, pnChars contém o tamanho, em TCHARs, da cadeia de caracteres múltipla recuperada, incluindo um caractere nulo de terminação.

Valor de retorno

Se o método for bem-sucedido, retornará ERROR_SUCCESS. Se o método não ler um valor, ele retornará um código de erro não zero definido em WINERROR.H. Se os dados referenciados não forem do tipo REG_MULTI_SZ, ERROR_INVALID_DATA é retornado.

Comentários

Esse método usa RegQueryValueEx e confirma que o tipo correto de dados é retornado. Confira RegQueryValueEx para saber mais.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis. Além disso, a função RegQueryValueEx usada por esse método não manipula explicitamente cadeias de caracteres encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

CRegKey::QueryQWORDValue

Chame esse método para recuperar os dados QWORD para um nome de valor especificado.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado.

qwValue
Ponteiro para um buffer que recebe o QWORD.

Valor de retorno

Se o método for bem-sucedido, retornará ERROR_SUCCESS. Se o método não ler um valor, ele retornará um código de erro não zero definido em WINERROR.H. Se os dados referenciados não forem do tipo REG_QWORD, ERROR_INVALID_DATA é retornado.

Comentários

Esse método usa RegQueryValueEx e confirma que o tipo correto de dados é retornado. Confira RegQueryValueEx para saber mais.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis. Além disso, a função RegQueryValueEx usada por esse método não manipula explicitamente cadeias de caracteres encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

CRegKey::QueryStringValue

Chame esse método para recuperar os dados de cadeias de caracteres para um nome de valor especificado.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado.

pszValue
Ponteiro para um buffer que recebe os dados de cadeia de caracteres.

pnChars
O tamanho, em TCHARs, do buffer apontado por pszValue. Quando o método retorna, pnChars contém o tamanho, em TCHARs, da cadeia de caracteres recuperada, incluindo um caractere nulo de terminação.

Valor de retorno

Se o método for bem-sucedido, retornará ERROR_SUCCESS. Se o método não ler um valor, ele retornará um código de erro não zero definido em WINERROR.H. Se os dados referenciados não forem do tipo REG_SZ, ERROR_INVALID_DATA é retornado. Se o método retornar ERROR_MORE_DATA, pnChars será igual a zero, não o tamanho do buffer necessário em bytes.

Comentários

Esse método usa RegQueryValueEx e confirma que o tipo correto de dados é retornado. Confira RegQueryValueEx para saber mais.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis. Além disso, a função RegQueryValueEx usada por esse método não manipula explicitamente cadeias de caracteres encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

CRegKey::QueryValue

Chame esse método para recuperar os dados do campo de valor especificado de m_hKey. Versões anteriores desse método não têm mais suporte e são marcadas 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
Ponteiro para uma cadeia de caracteres terminada em NULL que contém o nome do valor a ser consultado. Se pszValueName for NULL ou uma cadeia de caracteres vazia, "", o método recuperará o tipo e os dados para o valor não nomeado ou padrão da chave, se houver.

pdwType
Ponteiro para uma variável que recebe um código que indica o tipo de dados armazenados no valor especificado. O parâmetro pdwType poderá ser NULL se o código de tipo não for necessário.

pData
Um ponteiro para um buffer que recebe os dados do valor. O parâmetro pode ser NULL se os dados não forem obrigatórios.

pnBytes
Ponteiro para uma variável que especifica o tamanho, em bytes, do buffer que apontado pelo parâmetro pData. Quando o método retorna, essa variável contém o tamanho dos dados copiados para pData.

dwValue
Os dados numéricos do campo de valor.

lpszValueName
Especifica o campo de valor a ser consultado.

szValue
Os dados de cadeia de caracteres do campo de valor.

pdwCount
O tamanho dos dados da cadeia de caracteres. Seu valor é inicialmente definido como o tamanho do buffer szValue.

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS. Caso contrário, um código de erro não zero definido em WINERROR.H.

Comentários

As duas versões originais de QueryValue não têm mais suporte e são marcadas como ATL_DEPRECATED. O compilador emitirá um aviso se esses formulários forem usados.

O método restante chama RegQueryValueEx.

Importante

Esse método permite que o chamador especifique qualquer local do registro, lendo potencialmente dados que não são confiáveis. Além disso, a função RegQueryValueEx usada por esse método não manipula explicitamente cadeias de caracteres encerradas em nulo. Ambas as condições devem ser verificadas pelo código de chamada.

CRegKey::RecurseDeleteKey

Chame esse método para remover a chave especificada do registro e remover explicitamente as subchaves.

LONG RecurseDeleteKey(LPCTSTR lpszKey) throw();

Parâmetros

lpszKey
Especifica o nome da chave a ser excluída. Esse nome precisa ser uma subchave de m_hKey.

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS. Caso contrário, um valor de erro não zero definido em WINERROR.H.

Comentários

Se a chave tiver subchaves, você precisará chamar esse método para excluir a chave.

CRegKey::SetBinaryValue

Chame esse método para definir o valor binário da chave do registro.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente, o método o adicionará à chave.

pValue
Ponteiro para um buffer que contém os dados a serem armazenados com o nome do valor especificado.

nBytes
Especifica o tamanho, em bytes, das informações apontadas pelo parâmetro pValue.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Esse método usa RegSetValueEx para gravar o valor no registro.

CRegKey::SetDWORDValue

Chame esse método para definir o valor DWORD da chave do registro.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente, o método o adicionará à chave.

dwValue
Os dados DWORD a serem armazenados com o nome do valor especificado.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Esse método usa RegSetValueEx para gravar o valor no registro.

CRegKey::SetGUIDValue

Chame esse método para definir o valor de GUID da chave do registro.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente, o método o adicionará à chave.

guidValue
Referência ao GUID a ser armazenada com o nome do valor especificado.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Esse método usa CRegKey::SetStringValue e converte o GUID em uma cadeia de caracteres usando StringFromGUID2.

CRegKey::SetKeyValue

Chame esse método para armazenar dados em um campo de valor especificado de uma chave especificada.

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

Parâmetros

lpszKeyName
Especifica o nome da chave a ser criada ou aberta. Esse nome precisa ser uma subchave de m_hKey.

lpszValue
Especifica os dados a serem armazenados. Esse parâmetro precisa ser diferente de NULL.

lpszValueName
Especifica o campo de valor a ser definido. Se um campo de valor com esse nome ainda não existir na chave, ele será adicionado.

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS. Caso contrário, um código de erro não zero definido em WINERROR.H.

Comentários

Chame esse método para criar ou abrir a chave lpszKeyName e armazenar os dados lpszValue no campo de valor lpszValueName.

CRegKey::SetKeySecurity

Chame esse método para definir a segurança da chave do registro.

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

Parâmetros

si
Especifica os componentes do descritor de segurança a ser definido. O valor ser uma combinação dos seguintes valores:

Valor Significado
DACL_SECURITY_INFORMATION Define a lista de controle de acesso discricionário (DACL) da chave. A chave precisa ter acesso WRITE_DAC ou o processo de chamada precisa ser o proprietário do objeto.
GROUP_SECURITY_INFORMATION Define o SID (identificador de segurança do grupo primário) da chave. A chave precisa ter acesso WRITE_OWNER ou o processo de chamada precisa ser o proprietário do objeto.
OWNER_SECURITY_INFORMATION Define o SID proprietário da chave. A chave precisa ter acesso WRITE_OWNER ou o processo de chamada precisa ser o proprietário do objeto ou ter o privilégio SE_TAKE_OWNERSHIP_NAME habilitado.
SACL_SECURITY_INFORMATION Especifica a SACL (lista de controle de acesso do sistema) da chave. A chave precisa ter acesso ACCESS_SYSTEM_SECURITY. A maneira correta de obter esse acesso é habilitar o SE_SECURITY_NAME privilégio no token de acesso atual do chamador, abrir o identificador de ACCESS_SYSTEM_SECURITY acesso e desabilitar o privilégio.

psd
Ponteiro para uma estrutura SECURITY_DESCRIPTOR que especifica os atributos de segurança a serem definidos para a chave especificada.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Define os atributos de segurança da chave. Confira RegSetKeySecurity para saber mais.

CRegKey::SetMultiStringValue

Chame esse método para definir o valor de cadeia de caracteres múltipla da chave do registro.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente, o método o adicionará à chave.

pszValue
Ponteiro para os dados da cadeia de caracteres múltipla a serem armazenados com o nome do valor especificado. Uma cadeia de caracteres múltipla é uma matriz de cadeias de caracteres terminadas em NULL, terminadas com dois caracteres nulos.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Esse método usa RegSetValueEx para gravar o valor no registro.

CRegKey::SetQWORDValue

Chame esse método para definir o valor QWORD da chave do registro.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente, o método o adicionará à chave.

qwValue
Os dados QWORD a serem armazenados com o nome do valor especificado.

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Esse método usa RegSetValueEx para gravar o valor no registro.

CRegKey::SetStringValue

Chame esse método para definir o valor de cadeias de caracteres da chave do registro.

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

Parâmetros

pszValueName
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente, o método o adicionará à chave.

pszValue
Ponteiro para os dados da cadeia de caracteres a serem armazenados com o nome do valor especificado.

dwType
O tipo de cadeia de caracteres para gravar o registro: REG_SZ (padrão) ou REG_EXPAND_SZ (para cadeia de caracteres múltipla).

Valor de retorno

Se o método obtiver êxito, o valor retornado será ERROR_SUCCESS. Se o método falhar, o valor retornado será um código de erro não zero definido em WINERROR.H.

Comentários

Esse método usa RegSetValueEx para gravar o valor no registro.

CRegKey::SetValue

Chame esse método para armazenar dados no campo de valor especificado de m_hKey. Versões anteriores desse método não têm mais suporte e são marcadas 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
Ponteiro para uma cadeia de caracteres contendo o nome do valor a definir. Se um valor com esse nome ainda não estiver presente na chave, o método o adicionará à chave. Se pszValueName for NULL ou uma cadeia de caracteres vazia, "", o método definirá o tipo e os dados para o valor não nomeado ou padrão da chave.

dwType
Especifica um código que indica o tipo de dados apontados pelo parâmetro pValue.

pValue
Ponteiro para um buffer que contém os dados a serem armazenados com o nome do valor especificado.

nBytes
Especifica o tamanho, em bytes, das informações apontadas pelo parâmetro pValue. Se os dados forem do tipo REG_SZ, REG_EXPAND_SZou REG_MULTI_SZ, nBytes precisam incluir o tamanho do caractere nulo de terminação.

hKeyParent
O identificador de uma chave aberta.

lpszKeyName
Especifica o nome de uma chave a ser criada ou aberta. Esse nome precisa ser uma subchave de hKeyParent.

lpszValue
Especifica os dados a serem armazenados. Esse parâmetro precisa ser diferente de NULL.

lpszValueName
Especifica o campo de valor a ser definido. Se um campo de valor com esse nome ainda não existir na chave, ele será adicionado.

dwValue
Especifica os dados a serem armazenados.

bMulti
Se for falso, indica que a cadeia de caracteres é do tipo REG_SZ. Se verdadeiro, indica que a cadeia de caracteres é uma cadeia de caracteres múltipla do tipo REG_MULTI_SZ.

nValueLen
Se bMulti é verdadeiro, nValueLen tetorna o comprimento da cadeia de caracteres lpszValue em caracteres. Se bMulti for falso, um valor de -1 indica que o método calculará o comprimento automaticamente.

Valor de retorno

Se tiver êxito, retornará ERROR_SUCCESS. Caso contrário, um código de erro não zero definido em WINERROR.H.

Comentários

As duas versões originais de SetValue são marcadas como ATL_DEPRECATED e não devem mais ser usadas. O compilador emitirá um aviso se esses formulários forem usados.

O terceiro método chama RegSetValueEx.

Confira também

Exemplo de DCOM
Visão geral da aula