Array
(
)

Problemas ao criar chaves Windows Vista - 7

Valnei Reis
   - 05 nov 2009

Bom dia pessoal.

Achei em alguns post em outros sites, mas as dicas acabaram não dando muito certo.

É o seguinte: Alguem utiliza em seus programa rotinas para criar chaves no registro do windows Vista?

Pq, o teiomoso do windows vista, cria as chaves em HKey_Uses + um número pra lá de estranho e depois as minhas chaves. sendo que mando sempre criar na chave Hkey_Local_Machine.  E quando vou recuperar os valores o sistema não encontra. Agora não sei se é porque ainda utilizo o Delphi 7, e ele é teoricamente incompatível com a rotina de criação de chaves.

Então peço aos amigos da comunidade, se alguem já passou por este problema e encontrou alguma luz no fim tunel, pq as rotinas que me enviaram, infelizmente não deram certo, continua na mesma.

Grato a todos.

Segue parte do código que utilizo para criar a chave no registro do windows.

  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKey('\Software\Synapse\SysContact\Rede', true) then
      begin
        try
          // Recebe valores das chaves.
          reg.WriteString('IpHost',JvIPAddress1.Text);
          reg.WriteString('Host',Edit1.Text);
          reg.WriteString('IpTerminal',JvIPAddress2.Text);
          reg.WriteString('Terminal',Edit2.Text);
          if (RadioButton1.Checked) then
              // Tipo 0 = Servidor.
              reg.WriteInteger('Tipo',0)
          else
              // Tipo 1 = Terminal.
              reg.WriteInteger('Tipo',1);
          reg.CloseKey;
        except
          on E:Exception do
              Application.MessageBox('Falha ao registrar dados da Rede.','Erro', mb_ok + Mb_IconWarning);
        end;
      end;
  finally
      reg.Free;
      Application.MessageBox('Dados adicionados ao sistema com sucesso.','Informação', mb_ok + Mb_IconInformation);
  end;

Rodrigo
   - 06 nov 2009

Isto ocorre devido ao controle de usuário UAC que foi implementado a partir do Vista. Com UAC habilitado você não consegue gravar nenhum registro dentro da chave LOCAL_MACHINE e nem consegue criar arquivos nas pastas do Arquivos de Programas. Por questão de segurança, toda informação gravada nestes dois lugares será redirecionada para um registro (ou pasta) dentro do perfil do usuário atual.

Toda informação deve ser gravada no perfil do usuário. Caso queira realmente gravar em locais comuns a todos os usuário, terá de fazer a chamada "elevação de perfil" para que o Windows permita sua aplicação fazer escrita a estes locais. Porém será exibida ao usuário aquela tela de confirmação do Windows perguntando se o usuário permite o programa rodar como administrador (sempre aparece nas instalações de programas). E eu não sei como se faz a elevação do programa. Já procurei na internet e não achei a solução.