First, don't mix up start-up path and executable path. First thing is absolutely unreliable and should never be relied upon. For interactive applications, the user can start application from anywhere. For services… I never even though of checking it up, but also might vary. Executable path is reliable thing, only remember that you can put read-only object there (or in some sub-directory).
There are different ways to do it, but the result sometimes depends on how application is hosted, so they fail to show correct path for a service or, say, application hosted by Visual Studio. Here is the portable reliable way of finding the executable path which I use in all cases:
string exeDirectory =
System.IO.GetDirectoryName(
System.Reflection.Assembly.GetEntryAssembly().Location);
—SA