#, для любых записей в реестр нужны права админа. Даже когда ты запускаешь regedit.exe он автоматически запускается от имени админа. В командной строке чтобы делать записи в реестр нужны права админа.
На C++ можно писать/читать память процесса. Допустим есть игра и в коде игры есть переменная со значением 100, который является нашим здоровьем. Это значение находиться на нашем ОЗУ и у него есть свой адрес. Зная адрес, На C++ можно получить это значение или изменить его. Например мы можем читать этот адрес и как только наше здоровье уменьшится переписать этот адрес со значением 100 и стать бессмертным. Таким образом пишутся читы для игр. Адреса бывают двух типов: обычные и базовые(pointer). Обычные меняются при каждом перезапуске игры, а базовый никогда не меняются. Обычные находить легко, а базовые сложно. Находят их через CheatEngine (после установки будет туториал с задачами по нахождению и изменению адреса на самой программе). Изучай WriteProcessMemory() и ReadProcessMemory(). Если что, обращайся, нечего делать.
P.S всё что я перечислил относится ко всем программам на любом языке с любой целью.