I recently discovered the System.Runtime.InteropServices.RuntimeEnvironment class, especially RuntimeEnvironment.GetRuntimeDirectory().
Also, RuntimeEnvironment.GetSystemVersion() gets the version of the CLR that is running the current process.