RegCreateEx вернуть 5 Доступ запрещен в Windows 7 - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть одна программа, которая использует API RegCreateKeyEx и прекрасно работает на WinXP и Vista.

Программа обычно запускается с повышенными привилегиями. Когда я пытаюсь использовать ту же программу в Windows 7, RegCreateKeyEx API возвращает 5 (доступ запрещен).

Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 12 ноября 2015

Эта ошибка возникает, когда вы пытаетесь создать ключ в той части реестра, где у вас нет прав на запись. В 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-разрядного приложения.

...