The problem with your misexec.exe code is that running cmd.exe someprogram.exe does not start the program, because cmd.exe does not execute the arguments passed to it. But you can say it with the / C switch, as shown here . In your case, this should work:
_Process.StartInfo.FileName = Environment.SystemDirectory.ToString() + "\\cmd.exe"; _Process.StartInfo.Arguments = "/C " + Environment.SystemDirectory.ToString() + "\\" + UninstallDir;
Where all I did was add /C (with a space after) to the beginning of the arguments. However, I do not know how to make your rundll32.exe code work.
source share