J'interroge le registre sur Windows CE. Je veux retirer la valeur DhcpDNS de la zone TcpIp du registre, qui fonctionne. Cependant, ce qui se passe, cependant, c'est s'il y a deux valeurs - affichées comme "x.x.x.x" "x.x.x.x"
dans mon éditeur de registre CE - alors cela ne fait que ramener l'une d'entre elles. Je suis sûr que c'est une erreur stupide mais je ne sais pas pourquoi cela se passe.RegQueryValueExW ne récupère qu'une seule valeur du registre
Voici le code que je utilise
std::string ISAPIConfig::GetTcpIpRegSetting(const std::wstring ®EntryName)
{
HKEY hKey = 0;
HKEY root = HKEY_LOCAL_MACHINE;
LONG retVal = 0;
wchar_t buffer[3000];
DWORD bufferSize = 0;
DWORD dataType = 0;
std::string dataString = "";
//Open IP regkey
retVal = RegOpenKeyExW(root, L"Comm\\PCI\\FETCE6B1\\Parms\\TcpIp", 0, 0, &hKey);
//Pull out info we need
memset(buffer, 0, sizeof(buffer));
bufferSize = sizeof(buffer);
retVal = RegQueryValueExW(hKey, regEntryName.c_str(), 0, &dataType, reinterpret_cast<LPBYTE>(buffer), &bufferSize);
Unicode::UnicodeToAnsi(buffer, dataString);
return dataString;
}
void UnicodeToAnsi(const std::wstring &wideString, std::string &ansiString){
std::wostringstream converter;
std::ostringstream converted;
std::wstring::const_iterator loop;
for(loop = wideString.begin(); loop != wideString.end(); ++loop){
converted << converter.narrow((*loop));
}
ansiString = converted.str();
}
Mise à jour avec code 'UnicodeToAnsi' - Comment puis-je modifier cela pour travailler avec multi_sz? – Chris