Compartilhar via


Função LsaStorePrivateData (ntsecapi.h)

Não use as funções de dados privados LSA ou a criptografia e descriptografia de dados genéricos. Em vez disso, use as funções CryptProtectData e CryptUnprotectData . Use apenas as funções de dados privados LSA quando for necessário manipular segredos LSA, conforme documentado no Modelo de Dados de Objeto Secreto

Sintaxe

NTSTATUS LsaStorePrivateData(
  [in] LSA_HANDLE          PolicyHandle,
  [in] PLSA_UNICODE_STRING KeyName,
  [in] PLSA_UNICODE_STRING PrivateData
);

Parâmetros

[in] PolicyHandle

Um identificador para um objeto Policy . O identificador deve ter o acesso POLICY_CREATE_SECRET correto se esses dados forem armazenados pela primeira vez sob a chave especificada pelo parâmetro KeyName . Para obter mais informações, consulte Abrindo um identificador de objeto de política.

[in] KeyName

Ponteiro para uma estrutura LSA_UNICODE_STRING que contém o nome da chave sob a qual os dados privados são armazenados.

[in] PrivateData

Ponteiro para uma estrutura LSA_UNICODE_STRING que contém os dados privados a serem armazenados. A função criptografa esses dados antes de armazená-los.

Se esse parâmetro for NULL, a função excluirá todos os dados privados armazenados sob a chave e excluirá a chave. As tentativas subsequentes de recuperar dados da chave retornarão o código de erro STATUS_OBJECT_NAME_NOT_FOUND.

Retornar valor

Se a função for bem-sucedida, o valor retornado será STATUS_SUCCESS.

Se a função falhar, o valor retornado será um código NTSTATUS. Para obter mais informações, consulte Valores retornados da função de política LSA.

Você pode usar a função LsaNtStatusToWinError para converter o código NTSTATUS em um código de erro do Windows.

Comentários

A função LsaStorePrivateData pode ser usada por aplicativos de servidor para armazenar senhas de cliente e computador.

Conforme descrito em Private Data Object, os objetos de dados privados incluem três tipos especializados: local, global e computador. Objetos especializados são identificados por um prefixo no nome da chave: "L$" para objetos locais, "G$" para objetos globais e "M$" para objetos de computador. Objetos locais não podem ser acessados remotamente. Objetos de computador só podem ser acessados pelo sistema operacional.

Além desses prefixos, os valores a seguir também indicam objetos locais ou de computador. Esses valores têm suporte para compatibilidade com versões anteriores e não devem ser usados quando você cria novos objetos locais ou de computador. O nome principal dos objetos de dados privados locais também pode ser "$machine.acc", "SAC", "SAI", "SANSC" ou começar com "RasDialParms" ou "RasCredentials". O nome da chave para objetos de computador também pode começar com " NL$" ou "sc".

Objetos de dados privados que não usam nenhuma das convenções de nome de chave anteriores podem ser acessados remotamente e não são replicados para outros domínios.

Os dados armazenados pela função LsaStorePrivateData não são absolutamente protegidos. No entanto, os dados são criptografados antes de serem armazenados e a chave tem uma DACL que permite que apenas o criador e os administradores leiam os dados.

Use a função LsaRetrievePrivateData para recuperar o valor armazenado por LsaStorePrivateData.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ntsecapi.h
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

LSA_UNICODE_STRING

LsaRetrievePrivateData