Compartilhar via


CoInitializeSecurity

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função registra a segurança e define os valores de segurança usar como padrão para o processo. Essa função é chamado exatamente uma vez por processo, ambos explicitamente ou implicitamente. Ela pode ser chamado pelo cliente ou o servidor ou ambos.

Para herdado aplicativos e outros aplicativos que não chamar explicitamente CoInitializeSecurity, COM chama essa função implicitamente com valores a partir de Registro.

Se seu aplicativo define a segurança de todo o processo usando o Registro e, em seguida, chamadas CoInitializeSecurity, o AppID Valores Registro serão ignorados e o CoInitializeSecurity valores serão usados.

Syntax

HRESULT CoInitializeSecurity(
  PSECURITY_DESCRIPTOR pVoid,
  LONG cAuthSvc,
  SOLE_AUTHENTICATION_SERVICE* asAuthSvc, 
  void* pReserved1,
  DWORD dwAuthnLevel,
  DWORD dwImpLevel,
  SOLE_AUTHENTICATION_LIST* pAuthList,
  DWORD dwCapabilities,
  void* pReserved3
);

Parameters

  • pVoid
    [no] Define as permissões acessar.

    Este parâmetro é usado quando o processo chamado CoInitializeSecurity Atua como um servidor. Seu valor pode ser NULL ou um ponteiro para um dos três tipos:

    • Um AppID
    • Um IAccessControl WScript.Shell
    • Um descritor de segurança Win32

    O tipo de dados que pVoid Aponta para é indicado por um sinalizador definir na dwCapabilities parâmetro.

    Se EOAC_APPID for especificada, pVoid Deve ser um ponteiro para uma GUID que especifica o AppID do processo. Este maiúsculas e minúsculas, todos os outros parâmetros do chamar são ignorados, e valores Registro são usados para verificações de segurança.

    Se EOAC_ACCESS_CONTROL for especificada, pVoid Deve ser um ponteiro para um IAccessControl objeto, que determina quem pode chamar o processo.

    Se a funcionalidade sinalizadores (dwCapabilities) não incluem o EOAC_APPID ou EOAC_ACCESS_CONTROL, pVoid Deve ser um ponteiro para uma descritor de segurança Win32.

    Se estiver pVoid NULL, não ACL verificação será ser feito.

    Se não for NULL, COM irá verificar as ACLs em chamadas e dwAuthnLevel não pode ser RPC_C_AUTHN_LEVEL_NONE. Consulte a seção " Comentários " para obter mais informações.

  • cAuthSvc
    [no] Contagem de entradas no asAuthSvc. Esse valor é usado pelo COM quando o processo atua como um servidor.

    Um valor de zero indica que a função deve registrar serviços nenhuma autenticação. Seu aplicativo deve fornecer um valor de zero se ele não é possível receber Seguro chamadas.

    Um valor de-1 indica a função para escolher qual autenticação serviços para registrar. Neste maiúsculas e minúsculas, o asAuthSvc parâmetro deve ser zero.

  • asAuthSvc
    [no] Matriz de informações serviço autenticação usadas pelo COM para escolher o serviço autenticação para o processo quando ele atua como um servidor.

    Esses valores controle quais provedores de segurança são usados para de entrada chamadas. As chamadas de saída podem usar qualquer provedor de segurança instalado a máquina.

    As entradas para NTLMSSP, Kerberos e Snego devem ter o pPrincipalName membro definido como NULL.

  • pReserved1
    [no] Reservado para uso futuro; Este valor deve ser NULL.
  • dwAuthnLevel
    [no] O nível de autenticação usar como padrão para o processo. COM falhará chamadas que chegam com um nível de autenticação inferior.

    Por padrão, todos os proxies usará menos este nível de autenticação.

    Este valor deve conter um dos sinalizadores a partir de RPC_C_AUTHN_LEVEL_XXX enumeração. Por padrão, todas as chamadas para IUnknown São feitas neste nível.

  • dwImpLevel
    [no] A representação usar como padrão nível para proxies.

    O valor desse parâmetro se aplica quando o processo é o cliente. Ele deve ser um valor a partir de RPC_C_IMP_LEVEL_XXX enumeração.

    Chamadas de Saída do cliente sempre usam a representação nível como especificado (ele não será negociado).

    Chamadas de entrada para o cliente podem ser qualquer representação no nível.

    Por padrão, todos os IUnknown As chamadas são feitas com essa representação nível Security-aware assim mesmo aplicativos devem definir esse nível cuidadosamente.

  • pAuthList
    [no] Este parâmetro é um ponteiro para um SOLE_AUTHENTICATION_LIST, que é uma matriz de SOLE_AUTHENTICATION_INFO estruturas.

    Esta lista indica o informações sobre autenticação usar como padrão a ser usado para cada serviço autenticação. Ele se aplica somente ao clientes.

    Quando DCOM negocia o serviço autenticação usar como padrão para um proxy, ele assumirá o informações sobre autenticação usar como padrão dessa lista.

    Se a pasta pAuthInfo membro das SOLE_AUTHENTICATION_INFO estrutura que representa o serviço autenticação escolhido é NULL, DCOM usará a identidade processo para representar o cliente.

    Se os dois pAuthList e um do disfarce sinalizadores forem definidos, CoInitializeSecurity Retornará um erro.

    As entradas NTLMSSP e Kerberos na lista devem conter cada um ponteiro para um SEC_WINNT_AUTH_IDENTITY estrutura contendo o nome usuário e senha.

    Para Snego, o pAuthInfo membro deve ser NULL ou apontar para um SEC_WINNT_AUTH_IDENTITY_EXW estrutura.

    Se não-NULL, a estrutura PackageList membro deve apontar para um seqüência de caracteres contendo uma lista de nomes serviço autenticação, Comma-Separated e o PackageListLength membro deve fornecer o número de bytes na PackageList seqüência de caracteres.

    Se pAuthInfo é NULL, Snego será escolher uma lista dos serviços para tentar autenticação com base nesses disponível na máquina cliente.

    Para obter mais informações, consulte a seção " Comentários ".

  • dwCapabilities
    [no] Recursos adicionais do cliente ou servidor.

    Se um sinalizador Other Than um do seguinte EOLE_AUTHENTICATION_CAPABILITIES Sinalizadores for especificados, CoInitializeSecurity Retornará uma mensagem de erro: EOAC_APPID, EOAC_ACCESS_CONTROL, EOAC_STATIC_CLOAKING, EOAC_DYNAMIC_CLOAKING, EOAC_AUTO_IMPERSONATION, EOAC_SECURE_REFS, EOAC_REQUIRE_FULLSIC, EOAC_MAKE_FULLSIC, EOAC_ANY_AUTHORITY ou EOAC_MUTUAL_AUTH. Alguns desses sinalizadores não podem ser definidas simultaneamente.

  • pReserved3
    [no] Reservado para uso futuro; Ele deve ser definido como NULL.

Return Value

Essa função suporta o padrão valor de retorno E_INVALIDARG, bem como o seguinte:

  • S_OK
    Indica sucesso.
  • RPC_E_TOO_LATE
    CoInitializeSecurity já foi chamado.
  • RPC_E_NO_GOOD_SECURITY_PACKAGES
    asAuthSvc Não foi NULL e nenhum dos serviços de autenticação na lista pode ser registrado.

    Verificar os resultados salvos em asAuthSvc Para obter autenticação serviço códigos de erro específica.

  • E_OUT_OF_MEMORY
    Memória insuficiente para completo a operação solicitada.

Remarks

O CoInitializeSecurity função inicializa a camada de segurança e define os valores especificados como a usar como padrão de segurança.

Se o processo não chamar CoInitializeSecurity, COM chama automaticamente a primeira tempo uma interface é empacotado ou unmarshaled, registrando a segurança usar como padrão sistema. Nenhum pacote de segurança usar como padrão é registrado até então.

Quando o sinalizador EOAC_APPID é definido no dwCapabilities, pVoid aponta para um AppID e todos os outros parâmetros para CoInitializeSecurity são ignoradas (e deve ser zero).

CoInitializeSecurity Procura a nível de autenticação sob a chave AppID no Registro e usa-o para determinar a segurança usar como padrão. Se pVoid é NULL,

CoInitializeSecurity Será aspecto o Nome .exe aplicativo no Registro e usar o AppID armazenada lá. Isso proporciona as mesmas configurações de segurança como se o processo não tinha chamado CoInitializeSecurity.

Before Windows NT® versão 4.0 SP 4, CoInitializeSecurity retornou um erro se ele não localizar o AppID especificado no Registro.

Para obter mais informações sobre como a chave AppID é usada para definir a segurança, consulte processo-toda a configuração de segurança por meio do Registro e o EOLE_AUTHENTICATION_CAPABILITIES enumeração.

Se o sinalizador EOAC_ACCESS_CONTROL for definido, pVoid é um ponteiro para um IAccessControl objeto, que determina quem pode chamar o processo. DCOM será AddRef a IAccessControl e irá liberá-lo quando CoUninitialize é chamado.

O estado das IAccessControl objeto não deve ser alterado. Se EOAC_ACCESS_CONTROL for especificada, o dwAuthnLevel não pode ser Nenhum.

O CoInitializeSecurity função retornará um erro se o EOAC_APPID e EOAC_ACCESS_CONTROL sinalizadores são definidos.

Se nem o EOAC_APPID o sinalizador EOAC_ACCESS_CONTROL for especificada em dwCapabilities, pVoid Deve ser um ponteiro para um Win32 SECURITY_DESCRIPTOR. Um descritor de segurança contém dois ACLs:

  • O ACL (DACL) discricional indica quem é (e quem não é) permissão para chamar o processo.
  • O sistema ACL (SACL) contém informações auditar.

DCOM procura o sinalizador COM_RIGHTS_EXECUTE no lista de controle de acesso condicional para localizar sem que os chamadores têm permissão para conectar a objetos do processo. Até que DCOM oferecer suporte a auditoria, o SACL deve ser NULL. Um lista de controle de acesso condicional com nenhum ACEs permite não acessar. A NULL lista de controle de acesso condicional permitirá chamadas de qualquer pessoa.

DCOM irá copiar a descritor de segurança especificado. Se o aplicativo transmite um NULL descritor de segurança, COM será construção um que permite chamadas de qualquer pessoa.

Para determinar se a plataforma oferece suporte a essa função, consulte Determinando suporte COM APIs.

Requirements

Header objbase.h
Library ole32.lib
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

COM Functions