Configurar a segurança do processo do aplicativo cliente

Os aplicativos cliente que chamam interfaces do WMI podem controlar os níveis de segurança de seus processos. Todos os aplicativos do WMI acessam o WMI por meio do COM e você pode chamar a função COM CoInitializeSecurity para definir a segurança de seus processos. Aplicativos que fazem chamadas assíncronas ao WMI e aplicativos que se registram como consumidores de eventos definem níveis de segurança na chamada para o WMI.

Se você não fizer uma chamada explícita à CoInitializeSecurity, o COM a chamará implicitamente com valores do Registro. No entanto, os valores do Registro podem ter configurações mais baixas para representação e autenticação que não fornecem a segurança necessária para o WMI. Para obter mais informações, consulte Definir o nível de segurança do processo padrão usando C++.

O acesso assíncrono ao WMI não é recomendado. Um retorno de chamada assíncrono permite que um usuário não autenticado forneça dados ao coletor. Isso representa riscos de segurança para seus scripts e aplicativos. Para eliminar os riscos, use a comunicação semissíncrona ou síncrona ou execute verificações de acesso adequadas em seu aplicativo cliente. Para obter mais informações, consulte Chamar um método.

Chamadas para qualquer um dos proxies do WMI (IWbemServices, IEnumWbemClassObject, IWbemCallResult ou IWbemRefresher) usam um ponteiro fora do processo. Para obter mais informações sobre os padrões e as recomendações, veja Configurando a segurança no IWbemServices e outros proxies.

O procedimento a seguir descreve as etapas que você deve executar para definir a segurança do WMI no processo do seu aplicativo.

Para definir a segurança do WMI no processo do seu aplicativo

  1. Determine os níveis de segurança necessários para os sistemas operacionais Windows nos quais o aplicativo cliente é executado.
  2. Chame a função COM CoInitializeSecurity para definir a segurança padrão para o processo no qual o aplicativo cliente é executado. Isso declara a quantidade de segurança que outros aplicativos exigem para acessar o processo em que o aplicativo é executado.
  3. Se você precisar alterar a segurança em um proxy individual, por exemplo, em outra chamada para IWbemServices, chame CoSetProxyBlanket.
  4. Se você precisar controlar o hardware remoto ou um objeto do sistema que exija mais privilégios, use a função AdjustTokenPrivileges para habilitar os privilégios necessários. Observe que você não pode habilitar um privilégio que o processo ainda não tenha atribuído a ele. Para obter mais informações, confira Verificar o acesso a objetos privados.

Para obter mais informações sobre como definir o nível de segurança do processo padrão, veja Configurar o nível de segurança padrão do processo usando C++ e Configurar o nível de segurança padrão do processo usando VBScript.