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