2012-03-19 4 views
5

У меня есть 32-разрядное приложение и 32-разрядный установщик, написанный в Wise Installation Studio. Я знаю ... Я не должен использовать Мудрый, и я должен переключиться на что-то другое. Но сейчас я застрял.Запись в 64-разрядный реестр из 32-разрядного установщика

Наше приложение отличается интенсивностью графики и улучшает производительность, мы хотим, чтобы во время работы отключалась композиция рабочего стола (Windows Aero). Мы добились этого на 32-битных системах путем добавления записи реестра по адресу:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 

со значением DISABLEDWM.

Установите флажок «Отключить настольную композицию» на вкладке совместимости свойств для нашего EXE, которые будут проверяться по умолчанию.

Это прекрасно работает на 32-разрядных системах, но при запуске установщика в 64-разрядной системе Windows перенаправляет создание записей реестра на HKLM\SOFTWARE\Wow6432Node, и флаг установлен неправильно. Если я вручную создаю запись в 64-битном представлении реестра, то она работает.

Итак, как я могу заставить этот раздел реестра быть создан в 64-битном представлении реестра из нашего 32-разрядного установщика? Или есть лучший способ установить это свойство, кроме создания записи в реестре?

+1

Этот мудрый проект типа MSI-установщик? –

+0

@ChristopherPainter: Я так не думаю (не уверен, как проверить). Но полученный установщик имеет расширение **. Exe ** (не .msi). Любая идея, где искать это в Wise Installation Studio? – Travesty3

ответ

4

Я не уверен, какие возможности Wise дает вам относительно сценариев, но способ доступа к 64-разрядному реестру из обычной программы - использовать KEY_WOW64_64KEY при управлении реестром.

Если у вас есть возможность, по крайней мере, запустить внешний EXE-файл из установки, он должен решить вашу проблему.

+0

Спасибо. Похоже, это то, что нам нужно будет сделать, по крайней мере, пока я не смогу убедить всех остальных, что стоит потратить некоторое дополнительное время на перенос на новый установщик. – Travesty3

0

Обычно вы не можете получить доступ к 64-битовому реестру из 32-разрядных приложений. Я нашел некоторый код, который для PowerShell, который позволяет вам получить доступ к 64-битовому реестру через WMI: http://gallery.technet.microsoft.com/scriptcenter/6062bbfc-53bf-4f92-994d-08f18c8324c0

Однако я не уверен, можете ли вы использовать это в Wise. Вместо этого вы можете использовать Windows Installer XML и создать 64-разрядный MSI.

0

Я также использую Мудрый и должен поддерживать как 32, так и 64-битные окна. У меня был некоторый успех с использованием пакетных файлов, чтобы вызвать reg.exe для удаления и запроса 64-битных записей реестра. Вы должны использовать тот же метод для добавления и изменения реестра. Я ищу «программные файлы (x86), чтобы определить, есть ли это 64-битные окна. Если нет, я использую собственные средства управления реестром в мудрый, в противном случае я использую командные файлы с переданными параметрами. Reg.exe должен быть на вашем пути . перейти к DOS Prompt и типа REG/получить синтаксис

у меня есть regtest.bat, который содержит следующее:. reg.exe запрос% 1/v% 2>% 3

Первым параметром является раздел реестра, второй - это значение, а третий - текстовый файл, на который он написан.

My regdelete.bat содержит: reg.exe delete% 1/f Параметр - это запись в реестре, хочу удалить.

0

Проблема все еще существует, хотя реестр запросов с Reg.exe Потому что, когда файл bat, вызванный Wise, рег-запрос не может найти 64-битный ключ (может быть найден только 32-разрядный ключ).

3

Я не уверен, что это решение было возможно в то время этот вопрос был задан, но вы можете создать пользовательское действие, которое выполняет команду REG ADD и включаю /reg:64 переключатель, как это:

REG ADD "HKLM\Software\Example" /v "Name" /t REG_SZ /d "Data" /reg:64 

/reg:64 переключит его на 64-разрядный реестр. Я не совсем уверен, что это будет делать в 32-битной системе, но я ожидаю, что это, вероятно, будет проигнорировано.

+0

Это действительно правильный способ сделать это. Принятый ответ действителен для вызовов API, но в этом случае при использовании REG для добавления/удаления ключа/reg: 64 будет делать трюк. –

Смежные вопросы