Here are two method:
1) Environment.GetCommandLineArgs() returns an array containing all of the command line arguments. The first argument in this array is the canonical path to the application. No matter how the application is started ("..\myApp", "debug\myApp", etc.) the first element in the array will have the full path to your application, including the drive letter.
e.g.
string appStartupFolder = new System.IO.FileInfo(Environment.GetCommandLineArgs()[0]).DirectoryName
2) System.Reflection.Assembly.GetEntryAssembly() returns the path (including the filename, as with GetCommandLineArgs).