您的位置:首页 > 其它

windows服务等获取文件路径文件目录方法

2014-04-15 18:27 387 查看
控制台应用程序: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;
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: