Форум: "Начинающим";
Текущий архив: 2011.03.13;
Скачать: [xml.tar.bz2];
ВнизРабота с реестром в 64-разрядной ОС Найти похожие ветки
← →
harisma © (2010-12-20 15:04) [0]У нас при инсталляции программы (сделано в Wise Installer 9.02) в реестр прописываются некоторые параметры. Так вот, когда инсталируем на 32-битную операционку, то все нормально, а когда на 64-битную, то прописывается не в ту ветку (вместо ветки HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AppCompatFlag\Lay er пишет в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\AppCo mpatFlag\Layer).
Нам же необходимо, чтобы всегда прописывалось в нужную ветку, независимо от разрядности операционки.
Я понимаю, что напрямую в инсталляторе этого сделать нельзя, но я могу в скрипте инсталлятора вызвать внешнюю длл, где и реализовать необходимый мне функционал. Так вот вопрос, как такую длл написать?
← →
clickmaker © (2010-12-20 15:51) [1]> напрямую в инсталляторе этого сделать нельзя
Wise Installer не поддерживает 64бит?
← →
Rouse_ © (2010-12-20 16:06) [2]Смотри флаг KEY_WOW64_64KEY
← →
Игорь Шевченко © (2010-12-20 16:14) [3]а ваша инсталлируемая программа 64-битная ?
← →
harisma © (2010-12-20 16:31) [4]Наша программа вобще говоря 32 битная, но на 64 разрядной оси тоже работает.
← →
clickmaker © (2010-12-20 16:46) [5]> Наша программа вобще говоря 32 битная
ну тогда все правильно. У них своя песочница, и system32 тоже свой - SysWOW64
← →
Игорь Шевченко © (2010-12-21 10:23) [6]
> Наша программа вобще говоря 32 битная
> Нам же необходимо, чтобы всегда прописывалось в нужную ветку,
> независимо от разрядности операционки.
А ты уверен, что тогда 32-х битная программа будет работать ?
← →
harisma © (2010-12-21 12:39) [7]Ладно, трепаться все горазды, за исключением некоторых действительно давших дельный совет :)
Решить проблему удалось. Вот код:
function WriteDEPParamInReg(AAppName: PChar): SHORT;
var
dummy: Integer;
org: TRegistryEx;
key: HKEY;
begin
org := TRegistryEx.Create;
try
org.RootKey := HKEY_LOCAL_MACHINE;
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, DEPRegKey, 0, nil, Reg_Option_Non_Volatile,
KEY_ALL_ACCESS or KEY_WOW64_64KEY, nil, Key, @Dummy) = Error_Success) then
begin
org.SetCurrentKey(key);
org.WriteString(StrPas(AAppName), "DisableNXShowUI");
org.CloseKey;
end;
finally
FreeAndNil(Org);
end;
Result := 0;
end;
Только остается вопрос: не будет ли корректнее указывать ключ KEY_WOW64_64KEY только для 64-битных систем, а для 32-битных его не указывать?
← →
Rouse_ © (2010-12-21 15:26) [8]32 битные его игнорируют
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.03.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c