Função SetPrivateObjectSecurity (securitybaseapi.h)

A função SetPrivateObjectSecurity modifica o descritor de segurança de um objeto privado.

Para especificar se o servidor protegido dá suporte à herança automática de ACEs ( entradas de controle de acesso ), use a função SetPrivateObjectSecurityEx .

Sintaxe

BOOL SetPrivateObjectSecurity(
  [in]           SECURITY_INFORMATION SecurityInformation,
  [in]           PSECURITY_DESCRIPTOR ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  [in]           PGENERIC_MAPPING     GenericMapping,
  [in, optional] HANDLE               Token
);

Parâmetros

[in] SecurityInformation

Indica as partes do descritor de segurança a ser definido. Esse valor pode ser uma combinação dos sinalizadores de bit SECURITY_INFORMATION.

[in] ModificationDescriptor

Um ponteiro para uma estrutura SECURITY_DESCRIPTOR . As partes desse descritor de segurança indicadas pelo parâmetro SecurityInformation são aplicadas ao descritor de segurança ObjectsSecurityDescriptor .

[in, out] ObjectsSecurityDescriptor

Um ponteiro para um ponteiro para uma estrutura de SECURITY_DESCRIPTOR . Esse descritor de segurança deve estar em forma auto-relativa . A memória do descritor de segurança deve ser alocada do heap de processo (GetProcessHeap) com a função HeapAlloc.

Na entrada, esse é o descritor de segurança atual do objeto privado. A função a modifica para produzir o novo descritor de segurança. Se necessário, a função SetPrivateObjectSecurity aloca memória adicional para produzir um descritor de segurança maior.

[in] GenericMapping

Um ponteiro para uma estrutura GENERIC_MAPPING que especifica os direitos de acesso específicos e padrão que correspondem a cada um dos direitos de acesso genéricos.

[in, optional] Token

Um identificador para o token de acesso do cliente em cujo nome a segurança do objeto privado está sendo modificada. Esse parâmetro é necessário para garantir que o cliente tenha fornecido um valor legítimo para um novo SID ( identificador de segurança de proprietário). O token deve estar aberto para acesso TOKEN_QUERY.

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero.

Se a função falhar, ela retornará zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Essa função destina-se apenas ao uso por gerenciadores de recursos. Para implementar a semântica de controle de acesso padrão para atualizar descritores de segurança, um gerenciador de recursos deve verificar se as seguintes condições foram atendidas antes de chamar SetPrivateObjectSecurity:

  • Se o proprietário do objeto estiver sendo definido, o processo de chamada deverá ter WRITE_OWNER permissão ou ser o proprietário do objeto.
  • Se a DACL ( lista de controle de acesso discricionário ) do objeto estiver sendo definida, o processo de chamada deverá ter WRITE_DAC permissão ou ser o proprietário do objeto.
  • Se a SACL ( lista de controle de acesso do sistema ) do objeto estiver sendo definida, o privilégio SE_SECURITY_NAME deverá ser habilitado para o processo de chamada.
Se as condições anteriores não forem atendidas, uma chamada para essa função não falhará; no entanto, a política de acesso padrão não é imposta.

O processo que chama essa função não deve representar um cliente porque os clientes normalmente não têm privilégios apropriados necessários para operações de token subjacentes.

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 securitybaseapi.h (inclua Windows.h)
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

Funções de Controle de Acesso de cliente/servidor

Visão geral do cliente/servidor Controle de Acesso

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity