获取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')
🙂