我有一个Windows服务,应该在当前目录中查找配置文件。
所以我使用directory.getcurrentdirectiry()
但不是服务目录我回来了
c:\windows\system32
知道为什么以及如何获取服务目录?
答案 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