[PATCH] regedit: Always start the GUI as 64-bit when on a 64-bit prefix.

Austin English austinenglish at gmail.com
Tue Oct 31 19:00:58 CDT 2017


On Tue, Oct 31, 2017 at 6:27 PM, Zebediah Figura <z.figura12 at gmail.com> wrote:
> Same as we do with winecfg. This should help to eliminate some confusion
> with users who may want to edit keys with WOW64 redirection (e.g.
> Software\\Wine\\Drives).
>
> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
> ---
>  programs/regedit/main.c | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
>
> diff --git a/programs/regedit/main.c b/programs/regedit/main.c
> index 8f82580..460a951 100644
> --- a/programs/regedit/main.c
> +++ b/programs/regedit/main.c
> @@ -24,10 +24,13 @@
>  #include <stdlib.h>
>  #include <stdio.h>
>  #include <fcntl.h>
> +#include "wine/debug.h"
>
>  #define REGEDIT_DECLARE_FUNCTIONS
>  #include "main.h"
>
> +WINE_DEFAULT_DEBUG_CHANNEL(regedit);
> +
>  WCHAR g_pszDefaultValueName[64];
>
>  BOOL ProcessCmdLine(WCHAR *cmdline);
> @@ -138,11 +141,36 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
>  {
>      MSG msg;
>      HACCEL hAccel;
> +    BOOL is_wow64;
>
>      if (ProcessCmdLine(GetCommandLineW())) {
>          return 0;
>      }
>
> +    if (IsWow64Process( GetCurrentProcess(), &is_wow64 ) && is_wow64)
> +    {
> +        STARTUPINFOW si;
> +        PROCESS_INFORMATION pi;
> +        WCHAR filename[MAX_PATH];
> +        void *redir;
> +        DWORD exit_code;
> +
> +        memset( &si, 0, sizeof(si) );
> +        si.cb = sizeof(si);
> +        GetModuleFileNameW( 0, filename, MAX_PATH );
> +
> +        Wow64DisableWow64FsRedirection( &redir );
> +        if (CreateProcessW( filename, GetCommandLineW(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
> +        {
> +            WINE_TRACE( "restarting %s\n", wine_dbgstr_w(filename) );
> +            WaitForSingleObject( pi.hProcess, INFINITE );
> +            GetExitCodeProcess( pi.hProcess, &exit_code );
> +            ExitProcess( exit_code );
> +        }
> +        else WINE_ERR( "failed to restart 64-bit %s, err %d\n", wine_dbgstr_w(filename), GetLastError() );
> +        Wow64RevertWow64FsRedirection( redir );
> +    }
> +
>      /* Initialize global strings */
>      LoadStringW(hInstance, IDS_APP_TITLE, szTitle, COUNT_OF(szTitle));
>      LoadStringW(hInstance, IDS_REGISTRY_DEFAULT_VALUE, g_pszDefaultValueName, COUNT_OF(g_pszDefaultValueName));
> --
> 2.7.4

How should we expect users to edit the 32-bit entries then? Through
Wow6432node or some other way?

-- 
-Austin
GPG: 14FB D7EA A041 937B



More information about the wine-devel mailing list