Windows服务 - 获取当前目录

时间:2012-04-29 21:41:40

标签: c# windows-services working-directory

我有一个Windows服务,应该在当前目录中查找配置文件。

所以我使用directory.getcurrentdirectiry()但不是服务目录我回来了

c:\windows\system32

知道为什么以及如何获取服务目录?

5 个答案:

答案 0 :(得分:118)

您可以在代码中包含以下行,将当前目录设置为运行服务的目录:

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

这一点的重要部分是:

System.AppDomain.CurrentDomain.BaseDirectory

返回运行服务的目录的路径。

答案 1 :(得分:28)

试试这个:

System.Reflection.Assembly.GetEntryAssembly().Location

答案 2 :(得分:16)

从完整路径获取目录:

var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);
与编写Windows服务相比,这是一个非常愚蠢的问题:)

答案 3 :(得分:9)

请勿使用Directory.GetCurrentDirectory()。我有同样的问题,返回 C:\ Windows \ System32 。请改用:

Path.GetDirectoryName(Application.ExecutablePath);

答案 4 :(得分:0)

如果您的目标是 .NET Core 或 .NET Standard,您也可以使用 AppContext.BaseDirectory

https://docs.microsoft.com/en-us/dotnet/api/system.appcontext.basedirectory