![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с реестром в 64-разрядной ОС [D5, XP]
harisma © (2010-12-20 15:04:00)У нас при инсталляции программы (сделано в 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).
Нам же необходимо, чтобы всегда прописывалось в нужную ветку, независимо от разрядности операционки.
Я понимаю, что напрямую в инсталляторе этого сделать нельзя, но я могу в скрипте инсталлятора вызвать внешнюю длл, где и реализовать необходимый мне функционал. Так вот вопрос, как такую длл написать?
Rouse_ (2010-12-21 15:26:00) [1]32 битные его игнорируют
harisma (2010-12-21 12:39:00) [2]Ладно, трепаться все горазды, за исключением некоторых действительно давших дельный совет :)
Решить проблему удалось. Вот код:
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-битных его не указывать?
Игорь Шевченко (2010-12-21 10:23:00) [3]
> Наша программа вобще говоря 32 битная
> Нам же необходимо, чтобы всегда прописывалось в нужную ветку,
> независимо от разрядности операционки.
А ты уверен, что тогда 32-х битная программа будет работать ?
clickmaker (2010-12-20 16:46:00) [4]> Наша программа вобще говоря 32 битная
ну тогда все правильно. У них своя песочница, и system32 тоже свой - SysWOW64
harisma (2010-12-20 16:31:00) [5]Наша программа вобще говоря 32 битная, но на 64 разрядной оси тоже работает.
Игорь Шевченко (2010-12-20 16:14:00) [6]а ваша инсталлируемая программа 64-битная ?
Rouse_ (2010-12-20 16:06:00) [7]Смотри флаг KEY_WOW64_64KEY
clickmaker (2010-12-20 15:51:00) [8]> напрямую в инсталляторе этого сделать нельзя
Wise Installer не поддерживает 64бит?