Вы пытаетесь получить доступ к 64-битному ключу реестра из 32-битного процесса.Чтобы сделать это, вам нужно включить флаг KEY_WOW64_64KEY
при открытии ключа, например:
TRegistry *reg = new TRegistry(KEY_WRITE | KEY_WOW64_64KEY);
Или:
reg->Access = KEY_WRITE | KEY_WOW64_64KEY;
В будущем, если вы когда-либо обновитев XE2 или новее, которые поддерживают 64-битную разработку, тогда вы должны указывать флаг, только если IsWow64Process()
сообщает, что вы 32-битный процесс, работающий под WOW64, например:
BOOL bIsWow64 = FALSE;
IsWow64Process(GetCurrentProcess(), &bIsWow64);
long flags = KEY_WRITE;
if (bIsWow64) flags |= KEY_WOW64_64KEY;
.
TRegistry *reg = new TRegistry(flags);
.
reg->Access = flags;