Как изменить данные в regedit (c++)

Мне нужно открыть данную папку в regedit (Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion) и изменить в ней RegisteredOrganization. У меня есть данный код:

    // ConsoleApplication1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

    int main()
{
    HKEY hKey;
    LPCTSTR sk = TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");

    LONG openRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sk, 0, KEY_ALL_ACCESS, &hKey);

    if (openRes == ERROR_SUCCESS) {
        printf("Success opening key.");
    }
    else {
        printf("Error opening key.");
    }

    LPCTSTR value = TEXT("RegisteredOrganization");
    char data[20] = "TestData\0";

    LONG setRes = RegSetValueEx(hKey, value, 0, REG_SZ, (LPBYTE)data, strlen(data) + 1);

    if (setRes == ERROR_SUCCESS) {
        printf("Success writing to Registry.");
    }
    else {
        printf("Error writing to Registry.");
    }

    LONG closeOut = RegCloseKey(hKey);

    if (closeOut == ERROR_SUCCESS) {
        printf("Success closing key.");
    }
    else {
        printf("Error closing key.");
    }
}

суть в том,что программа не изменяет данные


Ответы (1 шт):

Автор решения: HideME

В процессе открытия возвращается код ошибки 5, что означает доступ закрыт. У вас просто нет прав. Проверьте, есть ли у вас права администратора на этом пользователе. P.S. Попробовал просто открыть .exe, не смог открыть ключ реестра, запустил .exe от имени администратора, всё получилось.Результат Правда в реестре значение не поменялось, но я думаю нужна перезагрузка компьютера, потому что значение помечено красным, что значит изменения вступят в силу после перезагрузки.

→ Ссылка