Fala Pessoal,

Essa semana novamente voltei a trabalhar com o registro do Windows mas dessa vez tive que trabalhar tanto com sistemas 32 e 64 bits.

Como a ferramenta que uso há somente a versão 32bits e caso o usuário instale em um computador 64 bits ele cria uma chave especial no registro  para o software (HKEY_LOCAL_MACHINE\Software\WOW6432Node), veja aqui

O Código abaixo foi usando o Visual C++ no Microsoft Visual Studio 2010😦 , no exemplo abaixo estou pegando o caminho de instalação do 7Zip:

CString ReadProxyServer()
{
  CString cSvar = _T("");
  HKEY hKey;
  if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Automatos\\ASU\\Config"),0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
  {
    if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Automatos\\ASU\\Config"),0,KEY_WOW64_32KEY|KEY_QUERY_VALUE,&hKey) != ERROR_SUCCESS)
    {
      std::cout << "ERROR! Path not found! "<<"\n";
      std::exit;
    }
  }
  TCHAR szData[256];
  DWORD dwKeyDataType;
  DWORD dwDataBufSize = 256;
  if (::RegQueryValueEx(hKey, _T("ConfigDir"), NULL, &dwKeyDataType,(LPBYTE) &szData, &dwDataBufSize) == ERROR_SUCCESS)
  {
    switch ( dwKeyDataType )
    {
       case REG_SZ:
       cSvar = CString(szData);
       break;
    }
  }
  ::RegCloseKey( hKey );
  return cSvar;
 }

int main()

{
   //Convertendo o valor vindo do Registro
   CT2CA pszConvertedAnsiString (ReadProxyServer());
   std::string strStd (pszConvertedAnsiString);
   std::cout << strStd.c_str() << std::endl;
   return (0);
}

Abraços

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s