Programmatically start a process independent of platform

even though I'm running the correct DSIM.exe in System32

But you're not. That's the point. The file system redirector lies to 32-bit processes and so when you ask for System32 from an x86 process, you actually get the file from SysWow64. If you want to access the 64-bit exe, you need to ask for it via %windir%\sysnative

(%windir% being SpecialFolder.Windows)


While it's not answering your question about starting a 64 bit process from a 32 bit, an alternative approach to your underlying problem would be to query WMI to obtain the information you require. You can list optional features or list Server Features

This answer gives general information about performing a WMI query from C#.

You can also check and install windows features from powershell, which you might be able to spawn from your program instead of starting DISM.

Tags:

C#

.Net

Dism