64 -Bit -Windows -Registrierung - Warum wird %ProgramFiles %in %ProgramFiles (x86) %umgewandelt?

StackOverflow https://stackoverflow.com/questions/4789485

Frage

Nach dem Ausführen der folgenden Codes im 32 -Bit -Prozess die Daten %Programmdateien% automatisch konvertiert.

HKEY hSubKey;
DWORD dwState;
RegCreateKeyEx(HKEY_CURRENT_USER, L"TestKey", NULL, NULL,
   REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &dwState);
std::wstring data = L"%ProgramFiles%";
RegSetValueEx(hSubKey, L"TestValue", NULL, REG_EXPAND_SZ,
  (BYTE*)data.c_str(), (DWORD)(data.size() * sizeof(WCHAR)) + sizeof(WCHAR));

Das Ergebnis
enter image description here<- was zum Teufel. Wer erweitert es?

Ich möchte die Daten nicht konvertieren. -Aber ich muss den Typ verwenden Reg_expand_sz.
Wie mache ich?

War es hilfreich?

Lösung

Dies wird als Umleitung von Registry Value genannt und ist ein Teil von WOW64 -Registrierungsvirtualisierung. Sie können dies nicht auf Server 2003 oder Vista deaktivieren, aber Sie können in Win7 (Sie können sich jedoch nicht an die Flagge von der Oberseite meines Kopfes erinnern). Warum möchten Sie Schlüssel schreiben, die auf die 64-Bit-Programmdateien aus einer 32-Bit-Anwendung hinweisen? (Es gibt legitimale Antworten auf diese Frage, ich versuche das Szenario mehr herauszufinden)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top