Ternick
@Ternick

Почему данные не записываются в реестр?

Я компилирую приложение как x86!
Функция:
bool addToAutorun(string path) {
	HKEY hKey;
	LONG error = RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCSTR)"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_WOW64_32KEY, NULL, &hKey, NULL);
	if (hKey) {
		RegSetValueA(hKey, "test", REG_SZ, (LPCSTR)path.c_str(), sizeof(path.c_str()));
		RegCloseKey(hKey);
		return TRUE;
	}
	else {
		RegCloseKey(hKey);
		cout << error << endl;
		return FALSE;
	}
}

Я пробовал KEY_WOW64_32KEY этот ключ и KEY_SET_VALUE.
ААА, ЧТО ТУТ МОЖЕТ БЫТЬ НЕ ТАК ?
Я запускаю от администратора приложение.
Ошибок нет, но и результатов нет !
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
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. И код ошибки тоже не проверяешь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы