Intune Win32 App Deployment Challenges System32 Vs Syswow64

Let’s understand Intune Win32 App Deployment Challenges System32 Vs. Syswow64 from this post. Last year, I wrote a couple of posts on Intune win32-based app deployment (Part 1 and Part 2).

For both posts, many Intune admins shared their challenges. In this post, we will discuss the most common System32 Vs. Syswow64 challenges with app deployment (Intune Win32 App) and how to address them.

Related PostsSCCM Package Vs. Application 32 Vs. 64 Context & Intune Win32 App Failure Log Collection Backend Secrets

Introduction

By default, Intune triggers installation in a 32-bit process context. Unlike SCCM, Intune doesn’t have of box option to start app installation in a 64-bit context.

Patch My PC

There is a User Voice related to this issue. This post will discuss how we can trigger app installation from Intune in a 64-bit context.

System32 Vs. Syswow64

Let’s understand the difference between cmd exe inside system32 and syswow64 folder.

  1. SysWOW64
  • Running windows\SysWOW64\cmd .exe will launch a 32-bit instance of CMD .exe
  • Syswow64 registry hive is for 32-bit applications.
  • Syswow64 folder uses a file system redirector.
  1. System32
  • Running windows\System32\cmd .exe will launch a 64-bit instance of CMD .exe
  • System32 directory is reserved for 64-bit applications on 64-bit Windows.
  • System32 registry hive is for 64-bit applications.

SysWOW64 is for 32-bit. Do you think the naming of the folder is confusing… right?

More Details Intune Win32 App Deployment Challenges System32 Vs. Syswow64

Application packagers test the offline installation in the system context before uploading it to Intune. In this scenario, cmd .exe executes from location Windows\System32.

Adaptiva

The installation process executes as 64-bit. This is the default behavior on 64-bit OS.

But the same application when Intune deploys installation process executed as 32-bit. cmd .exe execute from location Windows\SysWOW64\cmd .exe.

This is the default deployment behavior for Intune win32 apps. Since Intune uses a 32-bit process, you may experience different behavior in some areas.

For example, actions like registry import, etc. Registry gets imported to syswow64 hive instead of system32 hive.

How to force Intune to launch app installation in a 64-bit context?

We need to change the command line with the path to the command shell, as shown below example. This approach is flexible and easy to use to bypass file system redirection.

 "%systemroot%\sysnative\cmd .exe" /c "Install.bat" 
Intune installation command line - System32 Vs Syswow64
Intune Win32 App Deployment Challenges – System32 Vs. Syswow64

End Result:

Now it’s time to compare the default and the modified Intune apps deployment behavior. I added the below WMI command to my Install batch file for analysis.

This WMI command will export all the process details at that run time to the text file. We can analyze text files to understand whether Intune command shell is executed in the 32- or 64-bit process.

You can add the below command to your install batch file for testing purposes only.

wmic process c:\windows\temp\ProcessList.txt

Default Intune application deployment behavior

intune install command line -System32 Vs Syswow64 Intune Win32 App
Application Edit Options with IntuneWin format – System32 Vs. Syswow64

Open the processlist.txt. You can find the installation command line from the SysWOW64 path.

Intune application process install context
Intune application process install context.

You can see the application registry imported to SysWOW64 Hive

SysWOW64 registry intunewin32
SysWOW64 registry intunewin32

Modified Intune application deployment behavior

Check the modified Intune application deployment behavior.

C:\windows\system32\cmd .exe /c Install.bat  Win32_Process cmd .exe C:\windows\SysWOW64\cmd .exe
C:\windows\sysnative\cmd .exe /c Install.bat Win32_ComputerSystem C:\windows\System32\cmd .exe  
Intune Application Deployment Behavior
Intune Application Deployment Behavior Intune Win32 App Deployment Challenges System32 Vs. Syswow64

You can now see that the installation command line gets changed to the “system32” path.

Note: In the text file, you need to check the column executable path and command line

intune sysnative command line Intune Win32 App Deployment Challenges System32 Vs Syswow64
Intune sysnative command line Intune Win32 App Deployment Challenges System32 Vs. Syswow64

Now you can see application registry values imported to System32 Hive (64 bit )

System32 registry intune  Intune Win32 App Deployment Challenges System32 Vs Syswow64
System32 registry intunes Intune Win32 App Deployment Challenges System32 Vs. Syswow64

Thanks to Andres, Kanchana, and Nazrin for troubleshooting this issue. Happy Testing!

Please comment below on your Intunewin32 challenges and observations.

Resources

8 thoughts on “Intune Win32 App Deployment Challenges System32 Vs Syswow64”

  1. This doesn’t seem to work for PowerShell. For example the file test.cmd containing “%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe” generates the error “The system cannot find the path specified.” The fact that the Intune Management Extension always runs the 32-bit “%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe” is problematic.

    Reply
  2. In August 2021 I have not been able to get this working via an install.cmd batch file, it will just not find the sysnative path for some reason. I have found a work around though after days of pulling my hair out: Create a new win32 app, make sure both your reg file and your install.cmd is wrapped up in your intunewin package (see IntuneWinAppUtil.exe packaging guide if needed) – then set your Install command on the package as just install.bat or install.cmd, depending on what you’re using. Then in your batch file, use the following command: reg import regfile.reg /reg:64 – this works a charm, at least for me.

    Reply
  3. For Powershell run as x64 in Intune, just use this command line, works for me:
    %windir%\SysNative\WindowsPowershell\v1.0\PowerShell.exe -NoProfile -ExecutionPolicy ByPass -File .\MyScript.ps1

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.