Я запускаю программу на 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 и т. Д., Похоже, используют реестр для всех видов настроек, но при этом не имеют повышенных прав, и мне не нужно давать им особые разрешения для внесения изменений в реестр?