segunda-feira, 28 de maio de 2012

Criando Fonte de Dados através de Diretivas de Grupo

O Caso:
Aqui na empresa utilizamos uma aplicação de terceiros que necessita de uma Fonte de Dados ODBC para configurar a conexão com o banco de dados SQL Server. A princípio, esta configuração era feita manualmente em todos os computadores que utilizavam tal aplicação. Com isso, a cada formatação destes computadores, era necessário a recriação dessa Fonte de Dados.

A Proposta:
Resolvemos utilizar o recurso de Preferências da Diretiva de Grupo (GPP) para automatizar o processo de criação desta Fonte de Dados e reduzir uma atividade da Equipe de Suporte de Campo.

O Problema:
Após criada a GPO, observamos que a mesma não estava sendo aplicada nos computadores alvo. Ao pesquisar o Visualizador de Eventos, encontramos um evento de Aplicativo de ID 4098 com a seguinte descrição:


O item de preferência usuário 'AplicacaoTerceiro' do objeto de Diretiva de Grupo 'ODBC Aplicacao {CC2F3937-17G8-37F5-C4G1-AABD1013645Z}' não foi aplicado porque falhou com o código de erro: '0x80070057 Parâmetro incorreto.' Esse erro foi suprimido.


A Pesquisa:
Após pesquisarmos sobre o código de erro descrito no evento, descobrimos que o Windows possui um "bug" na criação desta GPO: É acrescido um parâmetro a mais no arquivo .XML desta diretiva que causa este erro.

A Solução:
É preciso editar o arquivo manualmente e excluir o parâmetro a mais. Para encontrá-lo é fácil:
  1. Acesse a pasta SYSVOL de algum Controlador de Domínio;
  2. Acesse a pasta [FQDN Domain]\Policies;
  3. Acesse a pasta da Diretiva do ODBC (para saber qual é a Diretiva correta, basta olhar na descrição do evento, que neste caso, é a pasta {CC2F3937-17G8-37F5-C4G1-AABD1013645Z});
  4. Acesse a pasta User\Preferences\DataSources (vale lembrar que criamos uma Fonte de Dados de Usuário. Se fosse de Sistema, seria a pasta Machine ou invés da pasta User).
  5. Na pasta DataSources edite o arquivo DataSource.xml.
  6. Encontre o parâmetro cpassword="" e apague-o.
  7. Salve a alteração e pronto.
Vale lembrar que sempre que esta GPO for alterada, será necessário repetir esta operação para eliminar o parâmetro cpassword.

Até a próxima.