Вероятно, на вашу программу влияет виртуализация реестра .
Если 32-разрядная программа пытается выполнить запись в реестр в HKLM\SOFTWARE
, а разрешения не позволяют выполнить запись успешно, запускается виртуализация. В программе сообщается, что запись прошла успешно, и данные фактически записано в HKCU\Software\Classes\VirtualStore\MACHINE\SOFTWARE
. Затем, когда 32-разрядная программа пытается прочитать данные из реестра, в папку возвращаются значения из папки VirtualStore
. Таким образом, программа обманом полагает, что она успешно записала в местоположение, для которого у нее нет разрешений, и 32-разрядные программы продолжают работать в Vista / Windows 7 без изменений.
Кроме того, из-за UAC пользователь с правами администратора будет рассматриваться, как если бы он был пользователем без прав администратора, если только рассматриваемая программа специально не запускается для запуска с правами администратора. Программы установки должны запускаться с правами администратора, чтобы они могли писать в область HKLM.