使用Microsoft.NET平台开发的Windows Service Application,安装后运行的默认工作目录是"C:\Windows\System32",这样服务运行日志和其他的业务输出都将在该目录中,对业务系统来说这样的默认值非常不方便,需要修改该默认工作目录到应用程序的部署目录,经过N种方法的尝试,目前发现只有1中方法可行,即在服务入口方法中加入代码:
Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
示例代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
namespace Freemansoft.Csm.DbSynchronization
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Synchronization()
};
Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
ServiceBase.Run(ServicesToRun);
}
}
}