Função SetSecurityInfo (aclapi.h)

A função SetSecurityInfo define informações de segurança especificadas no descritor de segurança de um objeto especificado. O chamador identifica o objeto por um identificador.

Para definir o SACL de um objeto, o chamador deve ter o privilégio SE_SECURITY_NAME habilitado.

Sintaxe

DWORD SetSecurityInfo(
  [in]           HANDLE               handle,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

Parâmetros

[in] handle

Um identificador para o objeto para o qual definir informações de segurança.

[in] ObjectType

Um membro da enumeração SE_OBJECT_TYPE que indica o tipo de objeto identificado pelo parâmetro handle .

[in] SecurityInfo

Um conjunto de sinalizadores de bits que indicam o tipo de informações de segurança a serem definidas. Esse parâmetro pode ser uma combinação dos sinalizadores de bits SECURITY_INFORMATION .

[in, optional] psidOwner

Um ponteiro para um SID que identifica o proprietário do objeto. O SID deve ser aquele que pode ser atribuído como o SID proprietário de um descritor de segurança. O parâmetro SecurityInfo deve incluir o sinalizador OWNER_SECURITY_INFORMATION. Esse parâmetro poderá ser NULL se você não estiver definindo o SID proprietário.

[in, optional] psidGroup

Um ponteiro para um SID que identifica o grupo primário do objeto. O parâmetro SecurityInfo deve incluir o sinalizador GROUP_SECURITY_INFORMATION. Esse parâmetro poderá ser NULL se você não estiver definindo o SID do grupo primário.

[in, optional] pDacl

Um ponteiro para a nova DACL para o objeto . Esse parâmetro é ignorado, a menos que o valor do parâmetro SecurityInfo inclua o sinalizador DACL_SECURITY_INFORMATION . Se o valor do parâmetro SecurityInfo incluir o sinalizador DACL_SECURITY_INFORMATION e o valor desse parâmetro for definido como NULL, o acesso completo ao objeto será concedido a todos. Para obter informações sobre DACLs nulos , consulte Criando um DACL.

[in, optional] pSacl

Um ponteiro para o novo SACL para o objeto . O parâmetro SecurityInfo deve incluir qualquer um dos seguintes sinalizadores: SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION ou BACKUP_SECURITY_INFORMATION. Se a configuração SACL_SECURITY_INFORMATION ou SCOPE_SECURITY_INFORMATION, o chamador deverá ter o privilégio SE_SECURITY_NAME habilitado. Esse parâmetro poderá ser NULL se você não estiver definindo o SACL.

Retornar valor

Se a função for bem-sucedida, a função retornará ERROR_SUCCESS.

Se a função falhar, ela retornará um código de erro diferente de zero definido em WinError.h.

Comentários

Se você estiver definindo a DACL ( lista de controle de acesso discricionário ) ou quaisquer elementos na SACL ( lista de controle de acesso do sistema ) de um objeto, o sistema propagará automaticamente quaisquer ACEs ( entradas de controle de acesso herdadas) para objetos filho existentes, de acordo com as regras de herança ace.

Você pode usar a função SetSecurityInfo com os seguintes tipos de objetos:

  • Arquivos ou diretórios locais ou remotos em um NTFS
  • Pipes nomeados
  • Impressoras locais ou remotas
  • Serviços locais ou remotos do Windows
  • Compartilhamentos de rede
  • Chaves do Registro
  • Semáforos, eventos, mutexes e temporizadores de espera
  • Processos, threads, trabalhos e objetos de mapeamento de arquivos
  • Estações de janela e áreas de trabalho
  • Objetos de serviço de diretório

A função SetSecurityInfo não reordena ACEs com acesso permitido ou acesso negado com base na ordem preferencial. Ao propagar ACEs herdáveis para objetos filho existentes, SetSecurityInfo coloca ACEs herdados em ordem após todos os ACEs não herdados nos DACLs dos objetos filho.

Nota Se o acesso de compartilhamento aos filhos do objeto não estiver disponível, essa função não propagará ACEs desprotegidas para os filhos. Por exemplo, se um diretório for aberto com acesso exclusivo, o sistema operacional não propagará ACEs desprotegidos para os subdiretórios ou arquivos desse diretório quando a segurança no diretório for alterada.
 
Aviso Se o identificador fornecido tiver sido aberto com um valor ACCESS_MASK de MAXIMUM_ALLOWED, a função SetSecurityInfo não propagará ACEs para filhos.
 

Requisitos

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

Confira também

ACL

Controle de acesso

Funções de Controle de Acesso básicas

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo