What directory does a Windows Service run in?

Services are started from an application called Service Control Manager. This application lives in the system directory %WinDir%\System32

On a Windows 7 Ultimate - 64 bits this path is actually : %WinDir%\SysWOW64

For more information see Service Control Manager at MSDN.

Thanks Harper Shelby for pointing out problem with orginal post.


System.Diagnostics.Trace.WriteLine(Directory.GetCurrentDirectory());

will output the current directory. Put that code in the startup method of your service and use a tool like DebugView to check the output. Then you will know the startup folder of your service.

This simple technique will be useful with many problems in service development, especially to debug service startup.

You probably expected the working folder of your service to be the folder where the service executable is in (so did I). You can change to that folder using the following lines of code:

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