Usar APIs de Configurações de controles parentais

As configurações são discutidas antes do registro em log porque o registro em log está condicional nas configurações do usuário.

Gravação/leitura das configurações da API WMI

A API WMI fornece acesso não abstrato (bruto) a todas as configurações instanciadas pela infraestrutura de Controles dos Pais, conforme definido no arquivo de esquema Wpcsprov.mof. O repositório de configurações existe no namespace \root\CIMV2\Applications\WindowsParentalControls, com as definições de classe a seguir definindo um esquema. Os elementos de extensibilidade são observados.

Por computador:

  • WpcSystemSettings (uma instância)
    • Métodos AddUser() e RemoveUser() para criar e excluir configurações de controles dos pais para um determinado SID, respectivamente.
    • Propriedades para o sistema de classificações de jogos atual em vigor e acompanhamento e notificação relacionados à verificação de logs do administrador.
    • Extensibilidade: propriedades para listas de isenção de URL e aplicativo HTTP somente leitura e leitura/gravação para filtragem de conteúdo da Web, ID de substituição do Filtro de Conteúdo da Web e ID e caminho e ID do recurso de recurso de nome e número de evento de log personalizado de campos e registro de nome de cabeçalho.
  • WpcRatingsSystem (uma instância por cada sistema de classificações instalado)
    • WpcRating (uma instância por nível de classificação).
    • WpcRatingDescriptor (uma instância por descritor de classificação).
  • Extensibilidade: WpcExtension (uma instância por cada link de extensibilidade do Painel de Controles Dos Pais adicionado).
    • Propriedades para GUID, subsistema, ID, caminho do recurso de imagem, caminho de recurso de imagem de estado desabilitado, caminho executável, caminho DLL do recurso de nome de exibição e ID, caminho de DLL do recurso de subtítulo e ID.

Por usuário controlado:

  • WpcUserSettings (uma instância por usuário controlado)

    • Propriedades para possuir SID, sinalizador de ativação/desativação dos controles dos pais, sinalizador de ativação/desativação, limite de tempo de ativação/desativação, sinalizador habilitado para substituições, máscara de horas de logon e sinalizador geral de restrições de aplicativo ativado/desativado.

    • Em Windows 8 a propriedade existente representa a primeira meia hora para cada hora. Uma nova propriedade de meia hora foi adicionada para representar a segunda metade de cada hora. Uma nova propriedade adicional foi introduzida para representar a concessão diária de tempo.

      Windows 7 e Windows Vista: As restrições de temporizador suportavam granularidade de 1 hora.

  • WpcWebSettings (uma instância por usuário controlado)

    • Propriedades para ter SID, sinalizador de ativação/desativação, nível de filtro, sinalizador bloqueado de downloads de arquivo, sinalizador bloqueado de sites não classificados.
  • WpcUrlOverride (uma instância por URL explicitamente permitida ou negada na lista de substituição de URL usada como lista de permissões/bloqueios para filtragem de conteúdo da Web)

    • Propriedades para sid proprietário, URL afetada, estado permitido/bloqueado.
  • WpcAppOverride (uma instância por caminho explicitamente permitida na lista de substituição de aplicativos de Restrições Gerais de Aplicativo)

    • Propriedades para possuir SID. ID da regra SAFER, caminho para o aplicativo.
  • WpcGamesSettings (uma instância por usuário controlado)

    • Propriedades para ter SID, sinalizador de jogos permitidos, GUID do sistema de classificações para essas configurações, permitir sinalizador de jogos não classificados, ID de classificação máxima permitida no sistema atual, coleção de descritores negados.
  • WpcGameOverride (uma instância por ID de aplicativo explicitamente permitida ou negada)

    • Propriedades para sid proprietário, ID do aplicativo que identifica o jogo, estado permitido/negado.

Notas de representação de dados

Várias das configurações dentro do esquema são restritas pelo arquivo .mof com non_null de atributo. Eles não podem ser definidos como uma variante nula. Para todos os tipos que não são de matriz, o código controles dos pais inicializa valores. Para matrizes, estados vazios podem ser gravados usando uma variante nula, uma variante vazia ou uma matriz variante de tamanho zero. O provedor WMI normalizará todos eles para uma representação de estado variante nula na leitura.

O uso do WMI para registrar um link de extensibilidade da interface do usuário requer a especificação das seguintes informações:

  • GUID – vários links poderão compartilhar o mesmo GUID se fizerem parte de um pacote ou pacote comum.
  • Subsistema – destinado a indicar classificações de tipos de link, como pacotes ou aplicativos em conformidade autônomos
  • Nome do caminho e ID da DLL do recurso – especifica o recurso para o nome de exibição a ser exibido para o link.
  • Caminho e ID da DLL do recurso de subtítulo – especifica o recurso para texto adicional abaixo do nome.
  • Caminho da imagem – caminho completo de um BMP (bitmap) de 24 × 24 pixels, com profundidade de cor de 8 bits por pixel e, preferencialmente, um canal alfa. Isso é especificado de maneira consistente com extensões de shell: <caminho> do sistema de arquivos,< ID de recurso negativo\1>. Por exemplo: C:\Windows\System32\Wpccpl.dll-20.
  • Caminho da imagem desabilitado – o mesmo que o caminho da imagem acima, exceto a variante do bitmap mostrando o estado desabilitado. Esta imagem é mostrada quando os controles dos pais estão desativados.
  • Exe path – caminho completo para um executável a ser invocado usando ShellExecute(). Esse caminho deve ser especificado com barras invertidas ou o link não invocará o executável. A adição de um token %SID% após o caminho exe resultará na execução do link substituindo a cadeia de caracteres SID pelo usuário para o qual a página do hub está sendo exibida no momento. Em seguida, o executável pode usar a cadeia de caracteres SID para gerenciar a funcionalidade do usuário especificado.

A desinstalação do aplicativo deve remover um registro de link de extensibilidade.

Ao definir a propriedade FilterID para o mesmo GUID que um link de extensibilidade de interface do usuário registrado existente, o link exibido será promovido de um link genérico em Outras Configurações para o link exclusivo restrições da Web. Essa é uma configuração em todo o computador e, portanto, fará com que o LSP do Filtro de Conteúdo da Web in-box ignore toda a filtragem para todos os usuários controlados. Um nome descritivo também deve ser definido na propriedade FilterName, que é especificada por um caminho para a DLL e a ID do recurso.

O sistema controles dos pais recomenda o seguinte de qualquer filtro da Web de substituição:

  • Respeitar o estado geral de ativação/desativação dos controles dos pais para um usuário.
  • Respeitar as configurações do Relatório de Atividades para um usuário.
  • Monitore a propriedade FilterID. Se ele for alterado do GUID especificado pelo fornecedor, outro filtro assumirá a propriedade e o filtro do fornecedor deverá desabilitar a si mesmo. Uma interface COM foi adicionada para reduzir a sobrecarga de verificação periodicamente para essa alteração em relação a uma chamada WMI.
  • É altamente recomendável respeitar as entradas de lista de isenção de URL e aplicativo HTTP somente leitura e leitura/gravação.
  • É recomendável respeitar a lista de substituição de URL por usuário (lista de permissões/bloqueios).
  • Seja robusto para alternar rapidamente com o usuário.

Os controles dos pais não colocam limitações sobre como uma Web ou outro filtro de conteúdo se conecta ao Windows para implementar a filtragem. Os fornecedores podem aproveitar seus investimentos atuais ou tecnologias preferenciais (LSP, TDI, outros).

A desinstalação do filtro do fornecedor deve cancelar o registro das entradas FilterID e FilterName. Isso é executado definindo FilterID como GUID_NULL e FilterName como uma variante nula. O filtro de conteúdo da Web na caixa será habilitado novamente.

Observe que a reabilitação do filtro da Web na caixa filtrará apenas novas sessões e não sessões ativas de antes da opção.

Filtro de Conteúdo da Web Permitir/Bloquear Formato de Exportação/Importação de Lista

Não há suporte para esse recurso no Windows 8.

Windows 7 e Windows Vista: Há suporte para esse recurso.

<WebAddresses>

<URL AllowBlock="1">https://alloweddomain.com/</URL>

<URL AllowBlock="1">https://allowedurl.com/allowed/default.html</URL>

<URL AllowBlock="2">https://blockeddomain.com/</URL>

<URL AllowBlock="2">https://blockedurl.com/blocked/default.html</URL>

</WebAddresses>

Notas de substituição de restrições de aplicativo

As substituições de restrições de aplicativo são definidas por usuário para permitir binários ou caminhos específicos. Se um novo usuário controlado pelos pais estiver configurado e as substituições de restrições de aplicativo forem necessárias para esse usuário, é recomendável que a chave do Windows Run no registro seja usada com um aplicativo pequeno marcado como exigindo elevação implantada para gravar as substituições. Isso resultará em um prompt de credenciais única para configurar as substituições para o usuário, após o qual os binários de destino para as substituições não serão um incômodo para os usuários devido a solicitações de substituição de administrador adicionais.

Ações necessárias para que as alterações de configurações entrem em vigor

Se um Administrador alterar as configurações de um usuário padrão conectado, uma mensagem de aviso será gerada. Ele afirma que as alterações de configurações podem não entrar em vigor até que o usuário controlado faça logoff e entre novamente. Este é um design conservador. A maioria das configurações entrará em vigor quase imediatamente enquanto o usuário controlado estiver conectado. Uma exceção é para jogos, em que as configurações entrarão em vigor na próxima vez que a Explorer de Jogos for executada ou a invocação do jogo for tentada.

Código de exemplo

Exemplos de C++ são fornecidos no SDK demonstrando o uso dos recursos de extensibilidade de configurações. Consulte a seção Exemplos de controles dos pais.

Ferramentas de Teste independente

A inspeção de classes e instâncias é facilitada pelo plug-in Wmimgmt.msc e pela ferramenta Wbemtest.exe.

Considerações de 64 bits

Atualmente, as versões do sistema operacional Windows de 64 bits têm um provedor WMI de 32 bits e um provedor de 64 bits instalado.

Desenvolvimento e depuração de código geral

Se o Visual Studio for usado para o desenvolvimento de código de gerenciamento de configurações, a depuração local exigirá a execução do Visual Studio com direitos de administrador (invocando com Executar como Administrador usando a linha de comando ou a opção de clique com o botão direito do mouse). Isso ocorre devido ao processo e ao isolamento de mensagens implementados pelo UAC.

Configurações mínimas da API de Conformidade lidas

Interfaces e métodos

A API de Conformidade controlada pelo arquivo de cabeçalho Wpcapi.h fornece acesso simplificado somente leitura às configurações a seguir usando interfaces COM.

Os métodos de interface raiz IWindowsParentalControls fornecem acesso a:

  • Métodos IWPCSettings:
    • IsLoggingRequired()— o relatório de atividades está configurado como ativado para o usuário?
    • GetLastSettingsChangeTime()— o aplicativo pode estar ciente se alguma política de configurações foi alterada desde um marcar anterior.
    • GetRestrictions()– leia se restrições da Web, limites de tempo, restrições de jogo ou restrições de aplicativo estão definidas como ativadas.
  • Métodos IWPCWebSettings:
    • GetSettings()– recupera sinalizadores para filtro ativado ou desativado e downloads bloqueados.
    • RequestURLOverride()— insira uma solicitação no mecanismo de substituição do administrador (aprovação por excesso de ombro) que apresentará uma caixa de diálogo que contém as URLs a serem aprovadas.
  • Métodos IWPCGamesSettings:
    • IsBlocked()— para uma determinada ID de aplicativo de jogo, é o jogo bloqueado pelos controles dos pais e por qual motivo.
  • GetVisibility()— fornece informações sobre se a interface do usuário de controles parentais está oculta no momento.
  • GetWebFilterInfo()— fornece uma interface para obter a ID do Filtro de Conteúdo da Web atualmente ativo.

Código de exemplo

Exemplos de C++ são fornecidos no SDK demonstrando o uso da API de Conformidade. Consulte a seção Exemplos de controles parentais.