我很确定使用InstallUtil.exe安装时,Windows服务会将C:\ winnt(或类似)作为其工作目录.有没有办法可以访问或以其他方式捕获(在安装时)最初安装服务的目录?目前我手动将其输入到app.exe.config文件中,但这是可怕的手动,感觉就像一个黑客.
是否在运行时或安装时有一种编程方式来确定服务的安装位置?
您可以使用反射来获取正在执行的程序集的位置.这是一个简单的例程,它使用反射将工作目录设置为正在执行的程序集的位置:
String path = System.Reflection.Assembly.GetExecutingAssembly().Location; path = System.IO.Path.GetDirectoryName(path); Directory.SetCurrentDirectory(path);
你的意思是你想要包含程序集的目录吗?如果是这样,那很简单:使用Assembly.Location
.
我不会尝试改变过程的工作目录 - 如果它有令人讨厌的副作用我不会感到惊讶,如果确实你被允许这样做的话.
我不知道这个Directory.SetCurrentDirectory
方法.通常我这样做:
Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;