各种应用程序中获取文件路径的方法
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
http://cnsendnet.taobao.com
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=466
用这种方法,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));
/// <summary>
/// 获取应用程序web.config中的文件配置路径,并返回物理路径
/// 适用于web应用程序
/// </summary>
/// <param
name="key"></param>
///
<returns></returns>
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;
}
/// <summary>
/// 获取应用程序.config中的文件配置路径,并返回物理路径
/// 适用于windows服务、控制台等应用程序
/// </summary>
/// <param
name="key"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 获取应用程序.config中的文件配置路径,并返回物理路径
/// 适用于windows服务应用程序的成功安装之后
/// </summary>
/// <param
name="key"></param>
///
<returns></returns>
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;
}
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
http://cnsendnet.taobao.com
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=466
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?