Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função QueryServiceObjectSecurity recupera uma cópia do descritor de segurança associado a um objeto de serviço. Você também pode usar a função GetNamedSecurityInfo para recuperar um descritor de segurança.
Sintaxe
BOOL QueryServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[out, optional] PSECURITY_DESCRIPTOR lpSecurityDescriptor,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Parâmetros
[in] hService
Um identificador para o gerenciador de controle de serviço ou o serviço. Os identificadores para o gerenciador de controle de serviço são retornados pela função OpenSCManager e os identificadores para um serviço são retornados pela função OpenService ou CreateService . O identificador deve ter o acesso de READ_CONTROL correto.
[in] dwSecurityInformation
Um conjunto de sinalizadores de bits que indicam o tipo de informações de segurança a serem recuperadas. Esse parâmetro pode ser uma combinação dos sinalizadores de bits SECURITY_INFORMATION , com exceção de que essa função não dá suporte ao valor LABEL_SECURITY_INFORMATION .
[out, optional] lpSecurityDescriptor
Um ponteiro para um buffer que recebe uma cópia do descritor de segurança do objeto de serviço especificado. O processo de chamada deve ter o acesso apropriado para exibir os aspectos especificados do descritor de segurança do objeto. A estrutura SECURITY_DESCRIPTOR é retornada no formato auto-relativo .
[in] cbBufSize
O tamanho do buffer apontado pelo parâmetro lpSecurityDescriptor , em bytes. O maior tamanho permitido é de 8 quilobytes.
[out] pcbBytesNeeded
Um ponteiro para uma variável que recebe o número de bytes necessários para retornar as informações solicitadas do descritor de segurança, se a função falhar.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Os códigos de erro a seguir podem ser definidos pelo gerenciador de controle de serviço. Outros códigos de erro podem ser definidos pelas funções do Registro que são chamadas pelo gerenciador de controle de serviço.
| Código de retorno | Descrição |
|---|---|
|
O identificador especificado não foi aberto com acesso READ_CONTROL ou o processo de chamada não é o proprietário do objeto. |
|
O identificador especificado não é válido. |
|
As informações do descritor de segurança são muito grandes para o buffer lpSecurityDescriptor . O número de bytes necessários para obter todas as informações é retornado no parâmetro pcbBytesNeeded . Nada é gravado no buffer lpSecurityDescriptor . |
|
As informações de segurança especificadas não são válidas. |
Comentários
Quando um serviço é criado, o gerenciador de controle de serviço atribui um descritor de segurança padrão ao objeto de serviço. Para recuperar uma cópia do descritor de segurança de um objeto de serviço, chame a função QueryServiceObjectSecurity . Para alterar o descritor de segurança, chame a função SetServiceObjectSecurity . Para obter uma descrição do descritor de segurança padrão para um objeto de serviço, consulte Segurança do Serviço e Direitos de Acesso.
Para ler o proprietário, o grupo ou a DACL do descritor de segurança do objeto de serviço, o processo de chamada deve ter sido concedido READ_CONTROL acesso quando o identificador foi aberto. Para obter READ_CONTROL acesso, o chamador deve ser o proprietário do objeto ou a DACL do objeto deve conceder o acesso.
Para ler o SACL do descritor de segurança, o processo de chamada deve ter sido concedido ACCESS_SYSTEM_SECURITY acesso quando o identificador foi aberto. A maneira correta de obter esse acesso é habilitar o privilégio SE_SECURITY_NAME no token atual do chamador, abrir o identificador para acesso ACCESS_SYSTEM_SECURITY e desabilitar o privilégio.
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 | winsvc.h (inclua Windows.h) |
| Biblioteca | Advapi32.lib |
| DLL | Advapi32.dll |
Confira também
Controle de Acesso de baixo nível