Ich frage die Registry unter Windows CE ab. Ich möchte den DhcpDNS-Wert aus dem TcpIp-Bereich der Registrierung abrufen, was auch funktioniert.
Was jedoch passiert, ist, wenn es zwei Werte gibt - angezeigt als "x.x.x.x" "x.x.x.x"
in meinem CE-Registrierungseditor - dann wird nur einer von ihnen angezeigt. Ich bin sicher, dass dies ein dummer Fehler ist, aber ich bin unsicher, warum es passiert.
Hier ist der Code, den ich verwende
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();
}