Я запускаю программу на C ++ (которая отлично работает на 32-разрядной Win XP) в 64-разрядной версии Windows 7 в отладчике в Visual Studio 2010, и мне не удается открыть существующий раздел реестра со следующим кодом:
#define ACCESS (KEY_WRITE | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS)
HKEY hKey;
long dwErrorCode = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\MYTHING", 0, ACCESS|KEY_WOW64_64KEY, &hKey);
if (dwErrorCode != ERROR_SUCCESS)
{
// display error message
}
Возвращенный код ошибки: 5 с системным сообщением «Доступ запрещен».
Это сработает, если я запускаю Visual Studio 2010 от имени администратора, но я бы предпочел не делать этого. Кто-нибудь может предложить предложение?
Обновление: я забыл упомянуть, что я здесь портирую устаревший код из Windows XP. Таким образом, у меня нет возможности изменить фундаментальную структуру того, как было написано это программное обеспечение. Поскольку устаревший код использует реестр, это то, что должен делать и перенесенный код.
Кроме того, я бы предпочел не вносить изменения в свой конкретный компьютер, поскольку это означает, что мне придется менять каждый компьютер, на котором я хочу запустить это. Это может вызвать беспорядок, так как затронуто много машин. Например, я не хочу отключать UAC для всей машины.
Дальнейшее обновление: я не нашел решения, которым я доволен. Решили игнорировать код ошибки 5 в целях отладки, и, похоже, на данный момент он работает достаточно хорошо. Я пытаюсь понять, как стандартные приложения, такие как Word, Firefox и т. Д., Похоже, используют реестр для всех видов настроек, но при этом не имеют повышенных прав, и мне не нужно давать им особые разрешения для внесения изменений в реестр?