亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? systeminfo.cs

?? 詳細講述了數據庫編程
?? CS
?? 第 1 頁 / 共 3 頁
字號:
#region Copyright & License
//
// Copyright 2001-2006 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#endregion

using System;
using System.Configuration;
using System.Reflection;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
using System.Collections;

namespace log4net.Util
{
	/// <summary>
	/// Utility class for system specific information.
	/// </summary>
	/// <remarks>
	/// <para>
	/// Utility class of static methods for system specific information.
	/// </para>
	/// </remarks>
	/// <author>Nicko Cadell</author>
	/// <author>Gert Driesen</author>
	/// <author>Alexey Solofnenko</author>
	public sealed class SystemInfo
	{
		#region Private Constants

		private const string DEFAULT_NULL_TEXT = "(null)";
		private const string DEFAULT_NOT_AVAILABLE_TEXT = "NOT AVAILABLE";

		#endregion

		#region Private Instance Constructors

		/// <summary>
		/// Private constructor to prevent instances.
		/// </summary>
		/// <remarks>
		/// <para>
		/// Only static methods are exposed from this type.
		/// </para>
		/// </remarks>
		private SystemInfo() 
		{
		}

		#endregion Private Instance Constructors

		#region Public Static Constructor

		/// <summary>
		/// Initialize default values for private static fields.
		/// </summary>
		/// <remarks>
		/// <para>
		/// Only static methods are exposed from this type.
		/// </para>
		/// </remarks>
		static SystemInfo()
		{
			string nullText = DEFAULT_NULL_TEXT;
			string notAvailableText = DEFAULT_NOT_AVAILABLE_TEXT;

#if !NETCF
			// Look for log4net.NullText in AppSettings
			string nullTextAppSettingsKey = SystemInfo.GetAppSetting("log4net.NullText");
			if (nullTextAppSettingsKey != null && nullTextAppSettingsKey.Length > 0)
			{
				LogLog.Debug("SystemInfo: Initializing NullText value to [" + nullTextAppSettingsKey + "].");
				nullText = nullTextAppSettingsKey;
			}

			// Look for log4net.NotAvailableText in AppSettings
			string notAvailableTextAppSettingsKey = SystemInfo.GetAppSetting("log4net.NotAvailableText");
			if (notAvailableTextAppSettingsKey != null && notAvailableTextAppSettingsKey.Length > 0)
			{
				LogLog.Debug("SystemInfo: Initializing NotAvailableText value to [" + notAvailableTextAppSettingsKey + "].");
				notAvailableText = notAvailableTextAppSettingsKey;
			}
#endif
			s_notAvailableText = notAvailableText;
			s_nullText = nullText;
		}

		#endregion

		#region Public Static Properties

		/// <summary>
		/// Gets the system dependent line terminator.
		/// </summary>
		/// <value>
		/// The system dependent line terminator.
		/// </value>
		/// <remarks>
		/// <para>
		/// Gets the system dependent line terminator.
		/// </para>
		/// </remarks>
		public static string NewLine
		{
			get
			{
#if NETCF
				return "\r\n";
#else
				return System.Environment.NewLine;
#endif
			}
		}

		/// <summary>
		/// Gets the base directory for this <see cref="AppDomain"/>.
		/// </summary>
		/// <value>The base directory path for the current <see cref="AppDomain"/>.</value>
		/// <remarks>
		/// <para>
		/// Gets the base directory for this <see cref="AppDomain"/>.
		/// </para>
		/// <para>
		/// The value returned may be either a local file path or a URI.
		/// </para>
		/// </remarks>
		public static string ApplicationBaseDirectory
		{
			get 
			{
#if NETCF
				return System.IO.Path.GetDirectoryName(SystemInfo.EntryAssemblyLocation) + System.IO.Path.DirectorySeparatorChar;
#else
				return AppDomain.CurrentDomain.BaseDirectory;
#endif
			}
		}

		/// <summary>
		/// Gets the path to the configuration file for the current <see cref="AppDomain"/>.
		/// </summary>
		/// <value>The path to the configuration file for the current <see cref="AppDomain"/>.</value>
		/// <remarks>
		/// <para>
		/// The .NET Compact Framework 1.0 does not have a concept of a configuration
		/// file. For this runtime, we use the entry assembly location as the root for
		/// the configuration file name.
		/// </para>
		/// <para>
		/// The value returned may be either a local file path or a URI.
		/// </para>
		/// </remarks>
		public static string ConfigurationFileLocation
		{
			get 
			{
#if NETCF
				return SystemInfo.EntryAssemblyLocation+".config";
#else
				return System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
#endif
			}
		}

		/// <summary>
		/// Gets the path to the file that first executed in the current <see cref="AppDomain"/>.
		/// </summary>
		/// <value>The path to the entry assembly.</value>
		/// <remarks>
		/// <para>
		/// Gets the path to the file that first executed in the current <see cref="AppDomain"/>.
		/// </para>
		/// </remarks>
		public static string EntryAssemblyLocation
		{
			get 
			{
#if NETCF
				return SystemInfo.NativeEntryAssemblyLocation;
#else
				return System.Reflection.Assembly.GetEntryAssembly().Location;
#endif
			}
		}

		/// <summary>
		/// Gets the ID of the current thread.
		/// </summary>
		/// <value>The ID of the current thread.</value>
		/// <remarks>
		/// <para>
		/// On the .NET framework, the <c>AppDomain.GetCurrentThreadId</c> method
		/// is used to obtain the thread ID for the current thread. This is the 
		/// operating system ID for the thread.
		/// </para>
		/// <para>
		/// On the .NET Compact Framework 1.0 it is not possible to get the 
		/// operating system thread ID for the current thread. The native method 
		/// <c>GetCurrentThreadId</c> is implemented inline in a header file
		/// and cannot be called.
		/// </para>
		/// <para>
		/// On the .NET Framework 2.0 the <c>Thread.ManagedThreadId</c> is used as this
		/// gives a stable id unrelated to the operating system thread ID which may 
		/// change if the runtime is using fibers.
		/// </para>
		/// </remarks>
		public static int CurrentThreadId
		{
			get 
			{
#if NETCF
				return System.Threading.Thread.CurrentThread.GetHashCode();
#elif NET_2_0
				return System.Threading.Thread.CurrentThread.ManagedThreadId;
#else
				return AppDomain.GetCurrentThreadId();
#endif
			}
		}

		/// <summary>
		/// Get the host name or machine name for the current machine
		/// </summary>
		/// <value>
		/// The hostname or machine name
		/// </value>
		/// <remarks>
		/// <para>
		/// Get the host name or machine name for the current machine
		/// </para>
		/// <para>
		/// The host name (<see cref="System.Net.Dns.GetHostName"/>) or
		/// the machine name (<c>Environment.MachineName</c>) for
		/// the current machine, or if neither of these are available
		/// then <c>NOT AVAILABLE</c> is returned.
		/// </para>
		/// </remarks>
		public static string HostName
		{
			get
			{
				if (s_hostName == null)
				{

					// Get the DNS host name of the current machine
					try
					{
						// Lookup the host name
						s_hostName = System.Net.Dns.GetHostName();
					}
					catch(System.Net.Sockets.SocketException)
					{
					}
					catch(System.Security.SecurityException)
					{
						// We may get a security exception looking up the hostname
						// You must have Unrestricted DnsPermission to access resource
					}

					// Get the NETBIOS machine name of the current machine
					if (s_hostName == null || s_hostName.Length == 0)
					{
						try
						{
#if (!SSCLI && !NETCF)
							s_hostName = Environment.MachineName;
#endif
						}
						catch(InvalidOperationException)
						{
						}
						catch(System.Security.SecurityException)
						{
							// We may get a security exception looking up the machine name
							// You must have Unrestricted EnvironmentPermission to access resource
						}
					}

					// Couldn't find a value
					if (s_hostName == null || s_hostName.Length == 0)
					{
						s_hostName = s_notAvailableText;
					}
				}
				return s_hostName;
			}
		}

		/// <summary>
		/// Get this application's friendly name
		/// </summary>
		/// <value>
		/// The friendly name of this application as a string
		/// </value>
		/// <remarks>
		/// <para>
		/// If available the name of the application is retrieved from
		/// the <c>AppDomain</c> using <c>AppDomain.CurrentDomain.FriendlyName</c>.
		/// </para>
		/// <para>
		/// Otherwise the file name of the entry assembly is used.
		/// </para>
		/// </remarks>
		public static string ApplicationFriendlyName
		{
			get
			{
				if (s_appFriendlyName == null)
				{
					try
					{
#if !NETCF
						s_appFriendlyName = AppDomain.CurrentDomain.FriendlyName;
#endif
					}
					catch(System.Security.SecurityException)
					{
						// This security exception will occur if the caller does not have 
						// some undefined set of SecurityPermission flags.
						LogLog.Debug("SystemInfo: Security exception while trying to get current domain friendly name. Error Ignored.");
					}

					if (s_appFriendlyName == null || s_appFriendlyName.Length == 0)
					{
						try
						{
							string assemblyLocation = SystemInfo.EntryAssemblyLocation;
							s_appFriendlyName = System.IO.Path.GetFileName(assemblyLocation);
						}
						catch(System.Security.SecurityException)
						{
							// Caller needs path discovery permission
						}
					}

					if (s_appFriendlyName == null || s_appFriendlyName.Length == 0)
					{
						s_appFriendlyName = s_notAvailableText;
					}
				}
				return s_appFriendlyName;
			}
		}

		/// <summary>
		/// Get the start time for the current process.
		/// </summary>
		/// <remarks>
		/// <para>
		/// This is the time at which the log4net library was loaded into the
		/// AppDomain. Due to reports of a hang in the call to <c>System.Diagnostics.Process.StartTime</c>
		/// this is not the start time for the current process.
		/// </para>
		/// <para>
		/// The log4net library should be loaded by an application early during its
		/// startup, therefore this start time should be a good approximation for
		/// the actual start time.
		/// </para>
		/// <para>
		/// Note that AppDomains may be loaded and unloaded within the
		/// same process without the process terminating, however this start time
		/// will be set per AppDomain.
		/// </para>
		/// </remarks>
		public static DateTime ProcessStartTime
		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图一区二区三区| 国产精品天天看| 国产欧美日韩综合| 91精品国产综合久久久久久久久久 | 日韩av成人高清| 国产精品一级片在线观看| 色综合久久久久综合| 日韩视频不卡中文| 中文字幕在线观看一区二区| 一区二区三区产品免费精品久久75| 三级在线观看一区二区| 国产91对白在线观看九色| 欧美日韩中文另类| 日本一区二区三区电影| 天堂在线亚洲视频| youjizz久久| 精品国产网站在线观看| 日韩中文字幕亚洲一区二区va在线| 97aⅴ精品视频一二三区| 国产日韩精品视频一区| 国产一区二区影院| 久久久噜噜噜久久中文字幕色伊伊| 日韩激情av在线| 在线成人高清不卡| 亚洲韩国精品一区| 欧美日韩精品欧美日韩精品一| 亚洲一区免费在线观看| 欧美日韩久久久一区| 亚洲电影第三页| 欧美高清视频www夜色资源网| 亚洲一区二区三区在线看| 在线观看日韩精品| 婷婷成人激情在线网| 日韩一区二区免费在线观看| 免费亚洲电影在线| 精品福利一区二区三区| 国产一区二区三区免费看| 久久久久久久久久电影| 丁香亚洲综合激情啪啪综合| 亚洲欧美自拍偷拍| 欧美主播一区二区三区| 三级久久三级久久久| 日韩精品一区二区三区蜜臀 | 欧美性视频一区二区三区| 亚洲国产欧美日韩另类综合 | 亚洲图片自拍偷拍| 91麻豆精品国产91| 国产在线精品一区在线观看麻豆| 久久精品亚洲精品国产欧美| 99久久99久久综合| 亚洲3atv精品一区二区三区| 日韩一级大片在线观看| 高清av一区二区| 亚洲综合色自拍一区| 日韩三级伦理片妻子的秘密按摩| 国产一区二区美女诱惑| 亚洲欧洲www| 欧美日韩视频第一区| 激情综合色综合久久| 国产精品国产三级国产aⅴ原创 | 色天使久久综合网天天| 午夜精品一区二区三区电影天堂| 精品福利在线导航| 一本到不卡精品视频在线观看| 日本最新不卡在线| 一区免费观看视频| 日韩免费看网站| 91在线精品一区二区| 奇米色777欧美一区二区| 国产精品国产自产拍高清av| 日韩视频免费观看高清在线视频| www.亚洲色图| 久久99日本精品| 一个色综合网站| 久久久.com| 日韩视频在线永久播放| 色综合天天做天天爱| 久久99久久久久| 亚洲亚洲人成综合网络| 国产片一区二区| 91麻豆精品国产无毒不卡在线观看| 成人国产精品免费观看视频| 免费不卡在线观看| 亚洲色图色小说| 久久久精品tv| 日韩视频永久免费| 欧美日韩国产片| 色综合久久66| 99久久夜色精品国产网站| 国产在线视视频有精品| 麻豆视频一区二区| 丝袜美腿一区二区三区| 一区av在线播放| 亚洲免费在线视频一区 二区| 日本一区二区三区在线不卡 | 精一区二区三区| 亚洲国产精品一区二区尤物区| 国产精品区一区二区三区 | 56国语精品自产拍在线观看| 91视频www| 97精品久久久久中文字幕| 国产精品一级二级三级| 老司机精品视频导航| 奇米影视在线99精品| 天堂影院一区二区| 日韩不卡手机在线v区| 亚洲一区二区精品久久av| 亚洲欧美日韩国产综合| 国产精品久久久久精k8| 国产精品久久网站| 中文字幕一区二区三区视频| 国产精品亲子乱子伦xxxx裸| 国产欧美日韩综合精品一区二区| 久久久久国产精品厨房| 国产欧美日韩视频一区二区 | 色婷婷国产精品综合在线观看| av在线播放一区二区三区| 91麻豆免费视频| 色久优优欧美色久优优| 欧美日韩一区在线观看| 这里是久久伊人| 精品精品国产高清a毛片牛牛| 美女网站色91| 成人黄色777网| 成人综合婷婷国产精品久久免费| 高清久久久久久| 91视频国产观看| 欧美人牲a欧美精品| 精品国产一区二区亚洲人成毛片| 久久综合久久综合亚洲| 国产精品国产三级国产有无不卡| 亚洲色图.com| 日韩中文字幕1| 国产专区综合网| 91片在线免费观看| 欧美精品第一页| 久久精子c满五个校花| 自拍偷拍亚洲激情| 奇米在线7777在线精品| 国产成人午夜99999| 91丨九色丨蝌蚪丨老版| 7777精品久久久大香线蕉| 精品国产一区二区三区四区四| 亚洲素人一区二区| 免费观看30秒视频久久| 99亚偷拍自图区亚洲| 制服.丝袜.亚洲.中文.综合| 国产视频在线观看一区二区三区| 伊人性伊人情综合网| 理论电影国产精品| 91视频观看视频| 精品日韩在线一区| 亚洲夂夂婷婷色拍ww47| 国产成人鲁色资源国产91色综| 在线看国产日韩| 久久蜜桃av一区二区天堂| 一区二区免费看| 国产91精品在线观看| 欧美日韩久久一区二区| 亚洲欧洲精品一区二区精品久久久| 日韩高清在线观看| 一本大道久久a久久综合| 久久蜜桃香蕉精品一区二区三区| 偷拍亚洲欧洲综合| 99久久久精品免费观看国产蜜| 欧美一区2区视频在线观看| 亚洲日韩欧美一区二区在线| 国产伦精一区二区三区| 欧美一区二区三区公司| 一区二区三区在线观看欧美| 国产大陆a不卡| 日韩一二三区视频| 亚洲一区二区三区免费视频| eeuss鲁一区二区三区| 久久综合九色综合欧美就去吻 | 韩国成人福利片在线播放| 欧美三级韩国三级日本一级| 中文字幕二三区不卡| 精品一区二区国语对白| 69p69国产精品| 午夜欧美2019年伦理| 日本二三区不卡| 亚洲人成伊人成综合网小说| 国产精品77777| 精品久久久久久久久久久久包黑料 | 国产一区二区美女| 欧美成人一级视频| 久久精品国产77777蜜臀| 欧美一区二区视频在线观看2022| 一区二区高清免费观看影视大全| 不卡区在线中文字幕| 欧美韩日一区二区三区| 国产成人在线看| 国产天堂亚洲国产碰碰| 国产中文字幕精品| 国产欧美一区二区精品忘忧草| 国产精品一品二品| 国产精品入口麻豆九色| 9人人澡人人爽人人精品| 亚洲天堂a在线|