我有一个 Windows 服务,它应该在其当前目录中查找配置文件。
所以我使用directory.getcurrentdirectiry()
但不是我返回的服务目录
c:\windows\system32
知道为什么以及如何获取服务目录吗?
我有一个 Windows 服务,它应该在其当前目录中查找配置文件。
所以我使用directory.getcurrentdirectiry()
但不是我返回的服务目录
c:\windows\system32
知道为什么以及如何获取服务目录吗?
您可以通过在代码中包含此行来将当前目录设置为运行服务的目录:
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
这其中的重要部分是:
System.AppDomain.CurrentDomain.BaseDirectory
这将返回您的服务运行所在目录的路径。
试试这个:
System.Reflection.Assembly.GetEntryAssembly().Location
从完整路径获取目录:
var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);
与编写 Windows 服务相比,这是一个非常愚蠢的问题 :)
不要使用Directory.GetCurrentDirectory()
. 我在返回C:\Windows\System32时遇到了同样的问题。改用这个:
Path.GetDirectoryName(Application.ExecutablePath);
如果您的目标是 .NET Core 或 .NET Standard,您也可以使用AppContext.BaseDirectory
。
请参阅https://docs.microsoft.com/en-us/dotnet/api/system.appcontext.basedirectory