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 |