BTW I can't figure out why do you have any issues running .NET executables via Process.Start with UseShellExecute = false. Mono is smart enough to detect that it should run them by itself.
I. e. 

```csharp
class MainClass
	{
		public static void Main (string[] args)
		{
			if(args.Length!=0)
			{
				Console.WriteLine ("Second");
				return;
			}
			Process.Start (new ProcessStartInfo (Assembly.GetExecutingAssembly ().GetModules () [0].FullyQualifiedName, "1")
 { UseShellExecute = false });
		}
	}
```
worked fine even on Mono 2.2 back then.