+4  A: 

This should do it:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "rundll32.exe";
p.StartInfo.Arguments = "shell32.dll,OpenAs_RunDLL " + yourFileFullnameHere;

p.Start();
Jay Riggs
The problem with this approach is that it brings up the dialog box every time. I guess I should just execute this code if I get a Win32Exception stating that there is no association.
AngryHacker
Ah yes, I should have pointed this out.
Jay Riggs
+2  A: 

Process pr = new Process();

pr.StartInfo.FileName = fileTempPath;

pr.StartInfo.ErrorDialog = true;

pr.Start();