LONG error = RegCreateKeyEx(...);
if (hKey) {
Ошибок нет, но и результатов нет !
Ошибок нет, потому что ты не проверяешь код ошибки, а вместо этого проверяешь hKey.
Если внимательно прочитать
https://docs.microsoft.com/en-us/windows/win32/sys... то можно увидеть для KEY_WOW64_32KEY, что
This flag must be combined using the OR operator with the other flags in this table that either query or access registry values.
Подозреваю, что там должно быть
KEY_WOW64_32KEY | KEY_SET_VALUE
.
RegSetValueA(hKey, "test", REG_SZ, (LPCSTR)path.c_str(), sizeof(path.c_str()));
Не sizeof. И код ошибки тоже не проверяешь.