1. 程式人生 > >Environment類:提供有關當前環境和平臺的資訊以及操作它們的方法。

Environment類:提供有關當前環境和平臺的資訊以及操作它們的方法。

#region 程式集 mscorlib.dll, v4.0.30319
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\mscorlib.dll
#endregion

using Microsoft.Win32;
using System.Collections;
using System.Diagnostics.Contracts;
using System.Globalization;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Security;

namespace System
{
    // 摘要:
    //     提供有關當前環境和平臺的資訊以及操作它們的方法。此類不能被繼承。
    [ComVisible(true)]
    public static class Environment
    {
        // 摘要:
        //     獲取該程序的命令列。
        //
        // 返回結果:
        //     包含命令列引數的字串。
        public static string CommandLine { get; }
        //
        // 摘要:
        //     獲取或設定當前工作目錄的完全限定路徑。
        //
        // 返回結果:
        //     包含目錄路徑的字串。
        //
        // 異常:
        //   System.ArgumentException:
        //     嘗試設定為空字串 ("")。
        //
        //   System.ArgumentNullException:
        //     嘗試設定為 null.
        //
        //   System.IO.IOException:
        //     發生了 I/O 錯誤。
        //
        //   System.IO.DirectoryNotFoundException:
        //     嘗試設定一個無法找到的本地路徑。
        //
        //   System.Security.SecurityException:
        //     呼叫方沒有適當的許可權。
        public static string CurrentDirectory { get; set; }
        //
        // 摘要:
        //     獲取或設定程序的退出程式碼。
        //
        // 返回結果:
        //     包含退出程式碼的 32 位有符號整數。預設值為零。
        public static int ExitCode { get; set; }
        //
        // 摘要:
        //     獲取一個值,該值指示公共語言執行時 (CLR) 是否正在關閉。
        //
        // 返回結果:
        //     如果公共語言執行時正在關閉,則為 true;否則為 false。
        public static bool HasShutdownStarted { get; }
        //
        // 摘要:
        //     確定當前作業系統是否為 64 位作業系統。
        //
        // 返回結果:
        //     如果作業系統為 64 位作業系統,則為 true;否則為 false。
        public static bool Is64BitOperatingSystem { get; }
        //
        // 摘要:
        //     確定當前程序是否為 64 位程序。
        //
        // 返回結果:
        //     如果程序為 64 位程序,則為 true;否則為 false。
        public static bool Is64BitProcess { get; }
        //
        // 摘要:
        //     獲取此本地計算機的 NetBIOS 名稱。
        //
        // 返回結果:
        //     包含此計算機的名稱的字串。
        //
        // 異常:
        //   System.InvalidOperationException:
        //     無法獲取此計算機的名稱。
        public static string MachineName { get; }
        //
        // 摘要:
        //     獲取為此環境定義的換行字串。
        //
        // 返回結果:
        //     對於非 Unix 平臺為包含“\r\n”的字串,對於 Unix 平臺則為包含“\n”的字串。
        public static string NewLine { get; }
        //
        // 摘要:
        //     獲取包含當前平臺識別符號和版本號的 System.OperatingSystem 物件。
        //
        // 返回結果:
        //     一個包含平臺識別符號和版本號的物件。
        //
        // 異常:
        //   System.InvalidOperationException:
        //     該屬性無法獲得系統版本。- 或 -獲得的平臺識別符號不是 System.PlatformID. 的成員。
        public static OperatingSystem OSVersion { get; }
        //
        // 摘要:
        //     獲取當前計算機上的處理器數。
        //
        // 返回結果:
        //     指定當前計算機上處理器個數的 32 位有符號整數。沒有預設值。
        public static int ProcessorCount { get; }
        //
        // 摘要:
        //     獲取當前的堆疊跟蹤資訊。
        //
        // 返回結果:
        //     包含堆疊跟蹤資訊的字串。此值可為 System.String.Empty.。
        //
        // 異常:
        //   System.ArgumentOutOfRangeException:
        //     請求的堆疊跟蹤資訊超出範圍。
        public static string StackTrace { get; }
        //
        // 摘要:
        //     獲取系統目錄的完全限定路徑。
        //
        // 返回結果:
        //     包含目錄路徑的字串。
        public static string SystemDirectory { get; }
        //
        // 摘要:
        //     獲取作業系統的頁面檔案的記憶體量。
        //
        // 返回結果:
        //     系統頁面檔案中的位元組數。
        public static int SystemPageSize { get; }
        //
        // 摘要:
        //     獲取系統啟動後經過的毫秒數。
        //
        // 返回結果:
        //     一個 32 位帶符號整數,它包含自上次啟動計算機以來所經過的時間(以毫秒為單位)。
        public static int TickCount { get; }
        //
        // 摘要:
        //     獲取與當前使用者關聯的網路域名。
        //
        // 返回結果:
        //     與當前使用者關聯的網路域名。
        //
        // 異常:
        //   System.PlatformNotSupportedException:
        //     該作業系統不支援檢索網路域名。
        //
        //   System.InvalidOperationException:
        //     無法檢索此網路域名。
        public static string UserDomainName { get; }
        //
        // 摘要:
        //     獲取一個值,用以指示當前程序是否在使用者互動模式中執行。
        //
        // 返回結果:
        //     如果當前程序在使用者互動模式中執行,則為 true;否則為 false。
        public static bool UserInteractive { get; }
        //
        // 摘要:
        //     獲取當前已登入到 Windows 作業系統的人員的使用者名稱。
        //
        // 返回結果:
        //     已登入到 Windows 的人員的使用者名稱。
        public static string UserName { get; }
        //
        // 摘要:
        //     獲取一個 System.Version 物件,該物件描述公共語言執行時的主版本、次版本、內部版本和修訂號。
        //
        // 返回結果:
        //     用於顯示公共語言執行時版本的物件。
        public static Version Version { get; }
        //
        // 摘要:
        //     獲取對映到程序上下文的實體記憶體量。
        //
        // 返回結果:
        //     一個 64 位有符號整數,包含對映到程序上下文的實體記憶體位元組的數目。
        public static long WorkingSet { get; }

        // 摘要:
        //     終止此程序併為基礎作業系統提供指定的退出程式碼。
        //
        // 引數:
        //   exitCode:
        //     提供給作業系統的退出程式碼。
        //
        // 異常:
        //   System.Security.SecurityException:
        //     呼叫方沒有足夠的安全許可權來執行此函式。
        [SecuritySafeCritical]
        public static void Exit(int exitCode);
        //
        // 摘要:
        //     將嵌入到指定字串中的每個環境變數的名稱替換為該變數的值的等效字串,然後返回結果字串。
        //
        // 引數:
        //   name:
        //     包含零個或多個環境變數名的字串。每個環境變數都用百分號 (%) 引起來。
        //
        // 返回結果:
        //     一個字串,其中的每個環境變數均被替換為該變數的值。
        //
        // 異常:
        //   System.ArgumentNullException:
        //     name 為 null。
        [SecuritySafeCritical]
        public static string ExpandEnvironmentVariables(string name);
        //
        // 摘要:
        //     向 Windows 的應用程式事件日誌寫入訊息後立即終止程序,然後在發往 Microsoft 的錯誤報告中加入該訊息。
        //
        // 引數:
        //   message:
        //     解釋程序終止原因的訊息,或者如果未提供解釋則返回 null。
        [SecurityCritical]
        public static void FailFast(string message);
        //
        // 摘要:
        //     向 Windows 的應用程式事件日誌寫入訊息後立即終止程序,然後在發往 Microsoft 的錯誤報告中加入該訊息和異常資訊。
        //
        // 引數:
        //   message:
        //     解釋程序終止原因的訊息,或者如果未提供解釋則返回 null。
        //
        //   exception:
        //     一個異常,表示導致終止的錯誤。通常這是 catch 塊中的異常。
        [SecurityCritical]
        public static void FailFast(string message, Exception exception);
        //
        // 摘要:
        //     返回包含當前程序的命令列引數的字串陣列。
        //
        // 返回結果:
        //     字串陣列,其中的每個元素都包含一個命令列引數。第一個元素是可執行檔名,後面的零個或多個元素包含其餘的命令列引數。
        //
        // 異常:
        //   System.NotSupportedException:
        //     系統不支援命令列引數。
        [SecuritySafeCritical]
        public static string[] GetCommandLineArgs();
        //
        // 摘要:
        //     從當前程序檢索環境變數的值。
        //
        // 引數:
        //   variable:
        //     環境變數名。
        //
        // 返回結果:
        //     variable 指定的環境變數的值;或者如果找不到環境變數,則返回 null。
        //
        // 異常:
        //   System.ArgumentNullException:
        //     variable 為 null。
        //
        //   System.Security.SecurityException:
        //     呼叫方不具有執行此操作所需的許可權。
        [SecuritySafeCritical]
        public static string GetEnvironmentVariable(string variable);
        //
        // 摘要:
        //     從當前程序或者從當前使用者或本地計算機的 Windows 作業系統登錄檔項檢索環境變數的值。
        //
        // 引數:
        //   variable:
        //     環境變數名。
        //
        //   target:
        //     System.EnvironmentVariableTarget 值之一。
        //
        // 返回結果:
        //     variable 和 target 引數指定的環境變數的值;或者如果找不到環境變數,則返回 null。
        //
        // 異常:
        //   System.ArgumentNullException:
        //     variable 為 null。
        //
        //   System.NotSupportedException:
        //     target 是 System.EnvironmentVariableTarget.User 或 System.EnvironmentVariableTarget.Machine,當前作業系統為
        //     Windows 95、Windows 98 或 Windows Me。
        //
        //   System.ArgumentException:
        //     target 不是有效的 System.EnvironmentVariableTarget 值。
        //
        //   System.Security.SecurityException:
        //     呼叫方不具有執行此操作所需的許可權。
        [SecuritySafeCritical]
        public static string GetEnvironmentVariable(string variable, EnvironmentVariableTarget target);
        //
        // 摘要:
        //     從當前程序檢索所有環境變數名及其值。
        //
        // 返回結果:
        //     包含所有環境變數名及其值的字典;如果找不到任何環境變數,則返回空字典。
        //
        // 異常:
        //   System.Security.SecurityException:
        //     呼叫方不具有執行此操作所需的許可權。
        //
        //   System.OutOfMemoryException:
        //     緩衝區記憶體不足。
        [SecuritySafeCritical]
        public static IDictionary GetEnvironmentVariables();
        //
        // 摘要:
        //     從當前程序或者從當前使用者或本地計算機的 Windows 作業系統登錄檔項檢索所有環境變數名及其值。
        //
        // 引數:
        //   target:
        //     System.EnvironmentVariableTarget 值之一。
        //
        // 返回結果:
        //     包含 target 引數所指定的源中所有環境變數名及其值的字典;否則,如果找不到任何環境變數,則返回空字典。
        //
        // 異常:
        //   System.Security.SecurityException:
        //     呼叫方沒有為 target 的指定值執行此操作所需具備的許可權。
        //
        //   System.NotSupportedException:
        //     此方法不能用在 Windows 95 或 Windows 98 平臺上。
        //
        //   System.ArgumentException:
        //     target 包含非法值。
        [SecuritySafeCritical]
        public static IDictionary GetEnvironmentVariables(EnvironmentVariableTarget target);
        //
        // 摘要:
        //     獲取由指定列舉標識的系統特殊資料夾的路徑。
        //
        // 引數:
        //   folder:
        //     標識系統特殊資料夾的列舉常數。
        //
        // 返回結果:
        //     如果指定的系統特殊資料夾實際存在於您的計算機上,則為到該資料夾的路徑;否則為空字串 ("")。如果作業系統未建立資料夾、已刪除現有資料夾,或者資料夾是不對應物理路徑的虛擬目錄(例如“我的電腦”),則該資料夾不會實際存在。
        //
        // 異常:
        //   System.ArgumentException:
        //     folder 不是 System.Environment.SpecialFolder 的成員。
        //
        //   System.PlatformNotSupportedException:
        //     當前平臺不受支援。
        [SecuritySafeCritical]
        public static string GetFolderPath(Environment.SpecialFolder folder);
        //
        // 摘要:
        //     獲取由指定列舉標識的系統特殊資料夾的路徑,並使用用於訪問特殊資料夾的指定選項。
        //
        // 引數:
        //   folder:
        //     標識系統特殊資料夾的列舉常數。
        //
        //   option:
        //     指定用於訪問特殊資料夾的選項。
        //
        // 返回結果:
        //     如果指定的系統特殊資料夾實際存在於您的計算機上,則為到該資料夾的路徑;否則為空字串 ("")。如果作業系統未建立資料夾、已刪除現有資料夾,或者資料夾是不對應物理路徑的虛擬目錄(例如“我的電腦”),則該資料夾不會實際存在。
        //
        // 異常:
        //   System.ArgumentException:
        //     folder 不是 System.Environment.SpecialFolder. 的成員。
        //
        //   System.PlatformNotSupportedException:
        //     System.PlatformNotSupportedException
        [SecuritySafeCritical]
        public static string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption option);
        //
        // 摘要:
        //     返回包含當前計算機中的邏輯驅動器名稱的字串陣列。
        //
        // 返回結果:
        //     字串陣列,其中的每個元素都包含邏輯驅動器名稱。例如,如果計算機的硬碟是第一個邏輯驅動器,則返回的第一個元素是“C:\”。
        //
        // 異常:
        //   System.IO.IOException:
        //     發生 I/O 錯誤。
        //
        //   System.Security.SecurityException:
        //     呼叫方沒有所需的許可權。
        [SecuritySafeCritical]
        public static string[] GetLogicalDrives();
        //
        // 摘要:
        //     建立、修改或刪除當前程序中儲存的環境變數。
        //
        // 引數:
        //   variable:
        //     環境變數名。
        //
        //   value:
        //     要分配給 variable 的值。
        //
        // 異常:
        //   System.ArgumentNullException:
        //     variable 為 null。
        //
        //   System.ArgumentException:
        //     variable 包含零長度字串、起始十六進位制零字元 (0x00) 或等號(“=”)。- 或 -variable 或 value 的長度大於等於
        //     32,767 個字元。- 或 -在執行此操作的過程中發生錯誤。
        //
        //   System.Security.SecurityException:
        //     呼叫方不具有執行此操作所需的許可權。
        [SecuritySafeCritical]
        public static void SetEnvironmentVariable(string variable, string value);
        //
        // 摘要:
        //     建立、修改或刪除當前程序中或者為當前使用者或本地計算機保留的 Windows 作業系統登錄檔項中儲存的環境變數。
        //
        // 引數:
        //   variable:
        //     環境變數名。
        //
        //   value:
        //     要分配給 variable 的值。
        //
        //   target:
        //     System.EnvironmentVariableTarget 值之一。
        //
        // 異常:
        //   System.ArgumentNullException:
        //     variable 為 null。
        //
        //   System.ArgumentException:
        //     variable 包含零長度字串、起始十六進位制零字元 (0x00) 或等號(“=”)。- 或 -variable 的長度大於等於 32,767
        //     個字元。- 或 -target 不是 System.EnvironmentVariableTarget 列舉的成員。- 或 -target 為 System.EnvironmentVariableTarget.Machine
        //     或 System.EnvironmentVariableTarget.User,並且 variable 的長度大於等於 255。- 或 -target
        //     為 System.EnvironmentVariableTarget.Process,並且 value 的長度大於等於 32,767 個字元。-
        //     或 -在執行此操作的過程中發生錯誤。
        //
        //   System.NotSupportedException:
        //     target 是 System.EnvironmentVariableTarget.User 或 System.EnvironmentVariableTarget.Machine,當前作業系統為
        //     Windows 95、Windows 98 或 Windows Me。
        //
        //   System.Security.SecurityException:
        //     呼叫方不具有執行此操作所需的許可權。
        [SecuritySafeCritical]
        public static void SetEnvironmentVariable(string variable, string value, EnvironmentVariableTarget target);

        // 摘要:
        //     指定用於檢索系統特殊資料夾的目錄路徑的列舉常數。
        [ComVisible(true)]
        public enum SpecialFolder
        {
            // 摘要:
            //     邏輯桌面,而不是物理檔案系統位置。
            Desktop = 0,
            //
            // 摘要:
            //     包含使用者程式組的目錄。
            Programs = 2,
            //
            // 摘要:
            //     用作文件的公共儲存庫的目錄。
            Personal = 5,
            //
            // 摘要:
            //     “我的文件”資料夾。
            MyDocuments = 5,
            //
            // 摘要:
            //     用作使用者收藏夾項的公共儲存庫的目錄。
            Favorites = 6,
            //
            // 摘要:
            //     對應於使用者的“啟動”程式組的目錄。
            Startup = 7,
            //
            // 摘要:
            //     包含使用者最近使用過的文件的目錄。
            Recent = 8,
            //
            // 摘要:
            //     包含“傳送”選單項的目錄。
            SendTo = 9,
            //
            // 摘要:
            //     包含“開始”選單項的目錄。
            StartMenu = 11,
            //
            // 摘要:
            //     “我的音樂”資料夾。
            MyMusic = 13,
            //
            // 摘要:
            //     檔案系統目錄,充當屬於某個使用者的視訊的儲存庫。
            MyVideos = 14,
            //
            // 摘要:
            //     用於物理上儲存桌面上的檔案物件的目錄。
            DesktopDirectory = 16,
            //
            // 摘要:
            //     “我的電腦”資料夾。
            MyComputer = 17,
            //
            // 摘要:
            //     檔案系統目錄,包含“網路上的芳鄰”虛擬資料夾中可能存在的連結物件。
            NetworkShortcuts = 19,
            //
            // 摘要:
            //     包含字型的虛擬資料夾。
            Fonts = 20,
            //
            // 摘要:
            //     用作文件模板的公共儲存庫的目錄。
            Templates = 21,
            //
            // 摘要:
            //     檔案系統目錄,包含在所有使用者的“開始”選單上都出現的程式和資料夾。此特殊資料夾僅對 Windows NT 系統有效。
            CommonStartMenu = 22,
            //
            // 摘要:
            //     存放多個應用程式共享的元件的資料夾。此特殊資料夾僅對 Windows NT、Windows 2000 和 Windows XP 系統有效。
            CommonPrograms = 23,
            //
            // 摘要:
            //     檔案系統目錄,包含在所有使用者的“啟動”資料夾中都出現的程式。此特殊資料夾僅對 Windows NT 系統有效。
            CommonStartup = 24,
            //
            // 摘要:
            //     檔案系統目錄,包含在所有使用者桌面上出現的檔案和資料夾。此特殊資料夾僅對 Windows NT 系統有效。
            CommonDesktopDirectory = 25,
            //
            // 摘要:
            //     目錄,它用作當前漫遊使用者的應用程式特定資料的公共儲存庫。
            ApplicationData = 26,
            //
            // 摘要:
            //     檔案系統目錄,包含“印表機”虛擬資料夾中可能存在的連結物件。
            PrinterShortcuts = 27,
            //
            // 摘要:
            //     目錄,它用作當前非漫遊使用者使用的應用程式特定資料的公共儲存庫。
            LocalApplicationData = 28,
            //
            // 摘要:
            //     用作 Internet 臨時檔案的公共儲存庫的目錄。
            InternetCache = 32,
            //
            // 摘要:
            //     用作 Internet Cookie 的公共儲存庫的目錄。
            Cookies = 33,
            //
            // 摘要:
            //     用作 Internet 歷史記錄項的公共儲存庫的目錄。
            History = 34,
            //
            // 摘要:
            //     目錄,它用作所有使用者使用的應用程式特定資料的公共儲存庫。
            CommonApplicationData = 35,
            //
            // 摘要:
            //     Windows 目錄或 SYSROOT。它與 %windir% 或 %SYSTEMROOT% 環境變數相對應。
            Windows = 36,
            //
            // 摘要:
            //     “System”目錄。
            System = 37,
            //
            // 摘要:
            //     “Program files”目錄。
            ProgramFiles = 38,
            //
            // 摘要:
            //     “我的圖片”資料夾。
            MyPictures = 39,
            //
            // 摘要:
            //     使用者的配置檔案資料夾。應用程式不應在此級別上建立檔案或資料夾;它們應將其資料放在 System.Environment.SpecialFolder.ApplicationData
            //     所引用的位置之下。
            UserProfile = 40,
            //
            // 摘要:
            //     Windows“System”資料夾。
            SystemX86 = 41,
            //
            // 摘要:
            //     “Program Files”資料夾。
            ProgramFilesX86 = 42,
            //
            // 摘要:
            //     用於應用程式間共享的元件的目錄。
            CommonProgramFiles = 43,
            //
            // 摘要:
            //     “Program Files”資料夾。
            CommonProgramFilesX86 = 44,
            //
            // 摘要:
            //     檔案系統目錄,包含所有使用者都可以使用的模板。此特殊資料夾僅對 Windows NT 系統有效。
            CommonTemplates = 45,
            //
            // 摘要:
            //     檔案系統目錄,包含所有使用者共有的文件。此特殊資料夾僅對裝有 Shfolder.dll 的 Windows NT 系統、Windows 95 和 Windows
            //     98 系統有效。
            CommonDocuments = 46,
            //
            // 摘要:
            //     檔案系統目錄,包含計算機所有使用者的管理工具。
            CommonAdminTools = 47,
            //
            // 摘要:
            //     檔案系統目錄,用於儲存各個使用者的管理工具。Microsoft Management Console (MMC) 會將自定義的控制檯儲存在此目錄中,並且此目錄將隨使用者一起漫遊。
            AdminTools = 48,
            //
            // 摘要:
            //     檔案系統目錄,充當所有使用者共有的音樂檔案的儲存庫。
            CommonMusic = 53,
            //
            // 摘要:
            //     檔案系統目錄,充當所有使用者共有的影象檔案的儲存庫。
            CommonPictures = 54,
            //
            // 摘要:
            //     檔案系統目錄,充當所有使用者共有的視訊檔案的儲存庫。
            CommonVideos = 55,
            //
            // 摘要:
            //     檔案系統目錄,包含資源資料。
            Resources = 56,
            //
            // 摘要:
            //     檔案系統目錄,包含本地化資源資料。
            LocalizedResources = 57,
            //
            // 摘要:
            //     為了實現向後相容,Windows Vista 中可以識別此值,但該特殊資料夾本身已不再使用。
            CommonOemLinks = 58,
            //
            // 摘要:
            //     檔案系統目錄,充當等待寫入 CD 的檔案的臨時區域。
            CDBurning = 59,
        }

        // 摘要:
        //     指定用於獲取特殊資料夾路徑的選項。
        public enum SpecialFolderOption
        {
            // 摘要:
            //     返回路徑,但不驗證該路徑是否存在。如果資料夾位於網路上,則指定此選項可以縮短延隔時間。
            None = 0,
            //
            // 摘要:
            //     如果資料夾尚未存在,則強制建立它。
            DoNotVerify = 16384,
            //
            // 摘要:
            //     驗證資料夾的路徑。如果資料夾不存在,則返回空字串。這是預設行為。
            Create = 32768,
        }
    }
}