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