I have a windows service which is trying to access an xml file from the Application directory.
Windows Service Installed directory : C:\Services\MyService\MyService.exe
Path of the xml file : C:\Services\MyService\MyService.xml
I am trying to access the file using the following code.
using (FileStream stream = new FileStream("MyService.xml", FileMode.Open, FileAccess.Read))
{
//Read file
}
I get the following error.
"Can not find file : C:\WINDOWS\system32\MyService.xml"
My service is running with local system account and I don't want to use absolute path.
There is an elegant solution for this from the following link.
As my service is running both as console/service I just called
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory)
before running it as Service E.g.
static void Main(string[] args)
{
if (args.Length == 0)
{
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
RunAsService();
}
else
{
RunAsConsole();
}
}