Windows service - get current directory

68,708

Solution 1

Don't use Directory.GetCurrentDirectory(). I had the same exact problem with C:\Windows\System32 being returned. Use this instead:

Path.GetDirectoryName(Application.ExecutablePath);

Solution 2

You can set the current directory to the directory that your service is running from by including this line in your code:

System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

The important part of this is:

System.AppDomain.CurrentDomain.BaseDirectory

That returns the path to the directory your service is running from.

Solution 3

Try this:

System.Reflection.Assembly.GetEntryAssembly().Location

Solution 4

Getting directory from full path:

var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);

Quite a silly problem when comparing to writing a Windows service :)

Share:
68,708
MoShe
Author by

MoShe

Updated on July 05, 2022

Comments

  • MoShe
    MoShe about 2 years

    I have a Windows service that should look for a configuration file in its current directory.

    So I use directory.getcurrentdirectiry() but instead of the service directory I get back

    c:\windows\system32
    

    Any idea why and how should I get the service directory?