Calling dism.exe from System.Diagnostics.Process Fails

Sivakumar Kailasam picture Sivakumar Kailasam · May 9, 2011 · Viewed 9.2k times · Source

For enabling Microsoft-Hyper-V and Microsoft-Hyper-V-Management in Windows 2008 R2 Server(64bit), I'm calling dism.exe as a process. The command I've used is

Dism.exe /online /Get-FeatureInfo /FeatureName:Microsoft-Hyper-V

Dism.exe /online /Get-FeatureInfo /FeatureName:Microsoft-Hyper-V-Management-Clients

This works fine when I execute this from the command line but it fails when I try to execute it through my code. I've tried the 64bit version of Dism.exe under the C:\Windows\SysWoW64 folder but it fails too. Here is the error message I get,

You cannot service a running 64-bit operating system with a 32-bit version of DISM. Please use the version of DISM that corresponds to your computer's architecture.

What am I missing here?

UPDATE: SLaks was right, but the issue turned out to be that MS Visual studio express edition by default targets x86 which I had to manually edit in the .csproj file to AnyCPU to make it work.

Answer

SLaks picture SLaks · May 9, 2011

Because you're running in a 32-bit process, you're getting redirected to the 32-bit version in SysWoW64

Run %WINDIR%\SysNative\dism.exe to prevent redirection.