I found the answer here How to start a 64-bit process from a 32-bit process
The "sysnative" thing doesn't work in this scenario, but disabling filesystem redirection temporarily works:
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess)
Wow64DisableWow64FsRedirection(ref ptr);
try
{
// Add jump list code
}
finally
{
if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess)
Wow64RevertWow64FsRedirection(ptr);
}