] Visual Studio C ++ RegOpenKeyEx () Доступ к реестру запрещен ошибка 64-разрядная версия Windows 7

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

0
задан Alan Moore 16 October 2011 в 14:20
поделиться