我自己写了一个window服务   服务需要获取bin/debug/ 目录下面的一个配置文件我写完整路径 1. C:\\Users\\admin\\Documents\\...\\bin\\Debug\\Variables.config 这样可以读取但是写成 2.  Environment.CurrentDirectory + “\\Variables.config” 就不行,
日志里会显示 未能找到文件“C:\Windows\system32\Variables.config”。 的错误。关键是 1和2 是一样的路径啊
求大神说下怎么不写完整路径来获取配置文件 

解决方案 »

  1.   

    System.Reflection.Assembly.GetExecutingAssembly().Location
      

  2.   

    道理是,服务是由svchost加载的。而svchost在C:\Windows\system32下面。所以你用Environment.CurrentDirectory获得的是svchost的路径,而不是服务exe的路径。
      

  3.   

      我试了下System.Reflection.Assembly.GetExecutingAssembly().Location获取的是
      C:\Users\admin\Documents\..\bin\Debug\xxxx.exe而我要获取的是  C:\Users\admin\Documents\...\bin\Debug\xxxx.config请问怎么获取。 
      

  4.   

    "C:\Users\admin\Documents\..\bin\Debug\xxxx.exe".replace("xxxx.exe", "xxxx.config");
      

  5.   

    string path=System.Reflection.Assembly.GetExecutingAssembly().Location;
    path=Path.GetFullPath(path);
    path=Path.Combine(path,"xxxx.config");