获取Windows服务的完整path

我怎样才能找出文件夹的Windows服务.exe文件安装dynamic?

Path.GetFullPath(relativePath); 

返回一个基于C:\WINDOWS\system32目录的path。

但是, XmlDocument.Load(string filename)方法似乎正在安装服务.exe文件所在的目录内的相对path。

尝试

 System.Reflection.Assembly.GetEntryAssembly().Location 

尝试这个:

 AppDomain.CurrentDomain.BaseDirectory 

(就像这里: 如何findWindows服务的EXEpath )

 Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) 

这适用于我们的Windows服务:

 //CommandLine without the first and last two characters //Path.GetDirectory seems to have some difficulties with these (special chars maybe?) string cmdLine = Environment.CommandLine.Remove(Environment.CommandLine.Length - 2, 2).Remove(0, 1); string workDir = Path.GetDirectoryName(cmdLine); 

这应该给你的可执行文件的绝对path。

以上的另一个版本:

 string path = Assembly.GetExecutingAssembly().Location; FileInfo fileInfo = new FileInfo(path); string dir = fileInfo.DirectoryName; 

Environment.CurrentDirectory返回程序运行的当前目录。 在Windows服务的情况下,返回可执行程序将运行的位置的%WINDIR%/ system32path,而不是可执行部署的位置。

这应该给你的可执行文件所在的path:

 Environment.CurrentDirectory; 

如果没有,你可以尝试:

 Directory.GetParent(Assembly.GetEntryAssembly().Location).FullName 

一个更黑客但function的方式:

 Path.GetFullPath("a").TrimEnd('a') 

🙂