如何使用C#查找Windows服务的安装目录?

end*_*ian 19 c# windows windows-services

我很确定使用InstallUtil.exe安装时,Windows服务会将C:\ winnt(或类似)作为其工作目录.有没有办法可以访问或以其他方式捕获(在安装时)最初安装服务的目录?目前我手动将其输入到app.exe.config文件中,但这是可怕的手动,感觉就像一个黑客.

是否在运行时或安装时有一种编程方式来确定服务的安装位置?

Ste*_*sky 34

您可以使用反射来获取正在执行的程序集的位置.这是一个简单的例程,它使用反射将工作目录设置为正在执行的程序集的位置:

String path = System.Reflection.Assembly.GetExecutingAssembly().Location;
path = System.IO.Path.GetDirectoryName(path);
Directory.SetCurrentDirectory(path);
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 7

你的意思是你想要包含程序集的目录吗?如果是这样,那很简单:使用Assembly.Location.

我不会尝试改变过程的工作目录 - 如果它有令人讨厌的副作用我不会感到惊讶,如果确实你被允许这样做的话.


Ram*_*its 5

我不知道这个Directory.SetCurrentDirectory方法.通常我这样做:

Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
Run Code Online (Sandbox Code Playgroud)