@@ -38,13 +38,16 @@ implementation
3838 IDE.Messages, IDE.HelperFunc, IDE.ScintStylerInnoSetup, IDE.SignToolsForm, IDE.MsgBoxDesignerForm,
3939 IDE.FilesDesignerForm, IDE.RegistryDesignerForm, IDE.Wizard.WizardFormRegistryHelper;
4040
41+ { $IFNDEF WIN64}
42+ function Wow64DisableWow64FsRedirection_static (var OldValue: PVOID): BOOL; stdcall;
43+ external kernel32 name ' Wow64DisableWow64FsRedirection' ;
44+ function Wow64RevertWow64FsRedirection_static (OldValue: PVOID): BOOL; stdcall;
45+ external kernel32 name ' Wow64RevertWow64FsRedirection' ;
46+ { $ENDIF}
47+
4148procedure TMainFormToolsHelper.StartAddRemovePrograms ;
4249var
4350 Dir: String;
44- Wow64DisableWow64FsRedirectionFunc: function(var OldValue: Pointer): BOOL; stdcall;
45- Wow64RevertWow64FsRedirectionFunc: function(OldValue: Pointer): BOOL; stdcall;
46- RedirDisabled: Boolean;
47- RedirOldValue: Pointer;
4851 StartupInfo: TStartupInfo;
4952 ProcessInfo: TProcessInformation;
5053begin
@@ -56,20 +59,19 @@ procedure TMainFormToolsHelper.StartAddRemovePrograms;
5659 appwiz.cpl is buggy on XP x64 RC2 -- it doesn't show any Change/Remove
5760 buttons on 64-bit MSI entries, and it doesn't list non-MSI 64-bit apps
5861 at all. }
59- Wow64DisableWow64FsRedirectionFunc := GetProcAddress(GetModuleHandle(kernel32),
60- ' Wow64DisableWow64FsRedirection' );
61- Wow64RevertWow64FsRedirectionFunc := GetProcAddress(GetModuleHandle(kernel32),
62- ' Wow64RevertWow64FsRedirection' );
63- RedirDisabled := Assigned(Wow64DisableWow64FsRedirectionFunc) and
64- Assigned(Wow64RevertWow64FsRedirectionFunc) and
65- Wow64DisableWow64FsRedirectionFunc(RedirOldValue);
62+ { $IFNDEF WIN64}
63+ var RedirOldValue: PVOID;
64+ const RedirDisabled = Wow64DisableWow64FsRedirection_static(RedirOldValue);
6665 try
66+ { $ENDIF}
6767 Win32Check(CreateProcess(nil , PChar(' "' + AddBackslash(Dir) + ' control.exe" appwiz.cpl' ),
6868 nil , nil , False, 0 , nil , PChar(Dir), StartupInfo, ProcessInfo));
69+ { $IFNDEF WIN64}
6970 finally
7071 if RedirDisabled then
71- Wow64RevertWow64FsRedirectionFunc (RedirOldValue);
72+ Wow64RevertWow64FsRedirection_static (RedirOldValue);
7273 end ;
74+ { $ENDIF}
7375 CloseHandle(ProcessInfo.hProcess);
7476 CloseHandle(ProcessInfo.hThread);
7577end ;
0 commit comments