Как изменить данные в 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 шт):
В процессе открытия возвращается код ошибки 5, что означает доступ закрыт. У вас просто нет прав. Проверьте, есть ли у вас права администратора на этом пользователе.
P.S. Попробовал просто открыть .exe, не смог открыть ключ реестра, запустил .exe от имени администратора, всё получилось.
Правда в реестре значение не поменялось, но я думаю нужна перезагрузка компьютера, потому что значение помечено красным, что значит изменения вступят в силу после перезагрузки.