попробуйте это (из 32-битного процесса):
> %WINDIR%\sysnative\reg.exe query ...
(обнаружено, что здесь ).
Запущена ли 32-разрядная или 64-разрядная собственная (неуправляемая) программа, зависит только от исполняемого файла. Существует две копии reg.exe
, в (64-разрядном) C:\Windows\System32 и C:\Windows\SysWOW64 (32-bit). Поскольку Вы не указываете путь, Вы получаете то, что кажется первым в PATH
переменная среды, которая является 32-разрядной версией для 32-разрядного процесса.
Необходимо действительно факторизовать эту функцию в отдельную программу или COM-объект, и отметить программу с декларацией или запустить COM-объект с помощью моникера повышения COM.
Вы полагали, что создание маленького приложения "помощника" делает обновление реестра для Вас? Если Вы будете компилировать его в 64 бита и включать декларацию, которая указывает, что это требует прав администратора, то это покроет оба основания для Вас.
Существует API для обнаружения "разрядности" ОС, на которой Вы работаете так, Вы могли, очевидно, скомпилировать и RegistryUpdate32.exe и RegistryUpdate64.exe и назвать соответствующий.