​web、控制台应用程序、Windows服务中获取文件路径的方法-创新互联

​web、控制台应用程序、Windows服务中获取文件路径的方法

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册虚拟主机、营销软件、网站建设、土默特左旗网站维护、网站推广。

控制台应用程序:Environment.CurrentDirectory、Directory.GetCurrentDirectory()
windows服务:Environment.CurrentDirectory
windows服务安装成功后:

  1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
  2. ///
    /// 获取服务应用程序的安装路径(或者当前安装目录)///

/// /// public static string GetWindowsServiceInstallPath(string ServiceName)

{

string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;

string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();

//替换掉双引号

path = path.Replace("\"", string.Empty);

FileInfo fi = new FileInfo(path);

return fi.FullName;

//return fi.FullName.Directory.ToString();

}

//windows 服务中使用log4net
string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
string configFilePath = assemblyDirPath + "//log4net.config";
DOMConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));

  /// 
   /// 获取应用程序web.config中的文件配置路径,并返回物理路径
   /// 适用于web应用程序
   /// 
   /// 
   /// 
   public static string GetFileFullpath(string key)
   {
     if (string.IsNullOrEmpty(key)) return string.Empty;

     //获取应用程序的web.config中配置的路径
     string appSetting = System.Configuration.ConfigurationManager.AppSettings[key].ToString();
     //如果到的路径不是物理路径,则映射为物理路径
     if (!Path.IsPathRooted(appSetting)) appSetting = System.Web.HttpContext.Current.Server.MapPath(appSetting);

     return appSetting;
   }

///


/// 获取应用程序.config中的文件配置路径,并返回物理路径
/// 适用于windows服务、控制台等应用程序
///

///
///
public static string GetAssemblyPath(string key)
{
if (string.IsNullOrEmpty(key)) return string.Empty;

     //获取应用程序的web.config中配置的路径
     string appSetting = System.Configuration.ConfigurationManager.AppSettings[key].ToString();
     //如果到的路径不是物理路径,则映射为物理路径
     if (!Path.IsPathRooted(appSetting))
     {
       string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
       string dirName = Path.GetDirectoryName(assemblyPath);
       if (dirName.IndexOf(@"\bin\Debug") > -1)
         appSetting = dirName.Replace(@"\bin\Debug", appSetting.Substring(1).Replace(@"/", @"\"));
       else
         appSetting = dirName + appSetting.Substring(1).Replace(@"/", @"\");
     }

     return appSetting;
   }

///


/// 获取应用程序.config中的文件配置路径,并返回物理路径
/// 适用于windows服务应用程序的成功安装之后
///

///
///
public static string GetInstallPath(string key)
{
if (string.IsNullOrEmpty(key)) return string.Empty;

     //获取应用程序的web.config中配置的路径
     string appSetting = System.Configuration.ConfigurationManager.AppSettings[key].ToString();
     //如果到的路径不是物理路径,则映射为物理路径
     if (!Path.IsPathRooted(appSetting))
     {
       string processPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
       appSetting = processPath.Substring(0, processPath.LastIndexOf(@"\")) + appSetting.Substring(1).Replace(@"/", @"\");
     }

     return appSetting;
   }

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:​web、控制台应用程序、Windows服务中获取文件路径的方法-创新互联
链接地址:http://azwzsj.com/article/ddgodi.html