You, of course, should not use NotSupportedException because your application supports this method. NotSupportedException is used when implementing an interface or abstract class, but some of them are not fully implemented, since they do not make sense in the context (reading from the output stream, clearing the read-only collection, etc.).
A closer match is something InvalidOperationException where the member can be used but the current state is not set.
You say an โapplicationโ that offers an executable file, not a component for use by others. In this case, you will not throw an exception before the calling code (because the code does not call), but either raise the dialog (for the GUI application) or write to Console.Error (for the console application). This makes it likely that either you are just going to display the value of the Message property for an exception, or you just need a class type to mark a specific message. Either just throwing an AppNotRunningException from an Exception, or just using Exception directly, will probably work fine, depending on which of the two most convenient.
Jon hanna
source share