Эта ошибка возникает, когда вы пытаетесь создать ключ в той части реестра, где у вас нет прав на запись. В Windows 7 это в основном везде.
Для повышения совместимости 32-битных приложений между XP / 7 предлагается создать ключ в 32-битном представлении реестра. Измените ваш вызов так, чтобы он включал маску KEY_WOW64_32KEY
, чтобы он использовал 32-битное представление:
result = RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Foo"),
NULL, NULL, NULL, KEY_ALL_ACCESS | KEY_WOW64_32KEY, NULL, &hkey, &disposition);
Затем сначала создайте ключ в реестре вручную под HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Foo
. Отредактируйте разрешения и дайте себе (или всем) полный контроль.
Теперь вы сможете получить доступ к ключу из 32-разрядного приложения.