In short No. There is no reliable way to launch any given process and ensure it can only read but not write files.
When you create a process the ability for it to access files is really controlled by the OS. Namely by the vairous tokens associated with the process and their respective access levels. This is a Win32 security concept.
Now you can concievably start a process with entirely separate credentials. With enough control over the environment you can ensure these particular credentials cannot write anywhere on disk but that would be very very extreme and take much more work than I'm guessing you're looking for.
The CLR security model is no help to you hear. Sure you can toy around and ensure that purely managed processes cannot access files. However you cannot guarantee that Process.Start is actually launching a managed process or that the managed process does not consequently PInvoke into native code that writes to a file.