From http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onstart.aspx...
The arguments in the args parameter array can be set manually in the
properties window for the service in the Services console. The
arguments entered in the console are not saved; they are passed to the
service on a one-time basis when the service is started from the
control panel. Arguments that must be present when the service is
automatically started can be placed in the ImagePath string value for
the service's registry key
(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\).
You can obtain the arguments from the registry using the
GetCommandLineArgs method, for example: string[] imagePathArgs =
Environment.GetCommandLineArgs();.
Using your example, you'd want to put -install path="c:/bla bla"
in the Services console, but this is hardly satisfactory since it's not going to be saved, i.e., you'd have to do it every time your service started. You could go the registry route, but you said you don't want to do that. The only other option that comes to mind is some kind of service configuration file.