通過註冊表修改開機啓動項:
CurrentUser項與LocalMachine項:Microsoft\\Windows\\CurrentVersion\\Run
獲取各系統信息
Computer類(添加引用VisualBasic):提供用於獲取與計算機的內存、已加載程序集、名稱和操作系統有關的信息的屬性。
屬性:
AvailablePhysicalMemory獲取計算機的可用物理內存總量。
AvailableVirtualMemory 獲取計算機的可用虛擬地址空間的總量。
InstalledUICulture 獲取隨操作系統安裝的當前用戶界面區域性。
OSFullName 獲取操作系統的全名。
OSPlatform 獲取計算機的操作系統的平臺標識符。
OSVersion 獲取計算機操作系統的版本。
TotalPhysicalMemory 獲取計算機的物理內存總量。
TotalVirtualMemory 獲取計算機的可用虛擬地址空間的總量。
SystemInformation類:提供當前操作系統的有關信息
屬性:
BootMode:取得當前系統的啓動模式。
Clipboard類:提供了將數據置於和從系統剪貼板中檢索數據的方法。
方法:
ContainsText
功能:指示剪貼板中是否存在Text或UnicodeText格式的數據。
GetText
功能:從剪切板中檢索Text或UnicodeText格式的數據並返回。
Environment類:提供有關當前環境和平臺的信息以及操作它們的方法。
屬性:
SystemDirectory 獲取系統目錄。
系統目錄指windows操作系統的system32文件夾,該文件夾下存儲了各種系統資源及系統工具的可執行文件。
MachineName 獲取計算機名稱
CurrentDirectory 獲取當前程序運行目錄:
OSVersion 獲取操作系統版本號
TickCount 獲取系統啓動後經過的時間(毫秒)
UserName 獲取當前已登錄到windows操作系統的人員的用戶名
方法:
GetEnvironmentVariables 從當前進程檢索所有環境變量名及其值
代碼:
foreach(DictionaryEntry de in Environment.GetEnvironmentVariables())
{
Console.WriteLine(de.Key + ":");
Console.WriteLine(de.Value);
}
GetFolderPath 獲得系統特殊文件夾路徑
參數:Environment.SpecialFoler類型的枚舉值之一。
//ApplicationData 目錄,它用作當前漫遊用戶的應用程序特定數據的公共儲存庫。
// CommonApplicationData 目錄,它用作所有用戶使用的應用程序特定數據的公共儲存庫。
// LocalApplicationData 目錄,它用作當前非漫遊用戶使用的應用程序特定數據的公共儲存庫。
// Cookies 用作 Internet Cookie 的公共儲存庫的目錄。
// Desktop 邏輯桌面,而不是物理文件系統位置。
// Favorites 用作用戶收藏夾項的公共儲存庫的目錄。
// History 用作 Internet 歷史記錄項的公共儲存庫的目錄。
// InternetCache 用作 Internet 臨時文件的公共儲存庫的目錄。
// Programs 包含用戶程序組的目錄。
// MyComputer “我的電腦”文件夾。
// MyMusic “My Music”文件夾。
// MyPictures “My Pictures”文件夾。
// Recent 包含用戶最近使用過的文檔的目錄。
// SendTo 包含“發送”菜單項的目錄。
// StartMenu 包含“開始”菜單項的目錄。
// Startup 對應於用戶的“啓動”程序組的目錄。
// System “System”目錄。
// Templates 用作文檔模板的公共儲存庫的目錄。
// DesktopDirectory 用於物理上存儲桌面上的文件對象的目錄。
// Personal 用作文檔的公共儲存庫的目錄。
// MyDocuments “我的電腦”文件夾。
// ProgramFiles “Program files”目錄。
// CommonProgramFiles 用於應用程序間共享的組件的目錄。
ManagementObjectSearcher類:基於指定的查詢檢索管理對象的集合,該類是用於檢索管理信息的較爲常用的入口點之一。需要手動在項目選項卡-》程序集中添加System.Management引用。
函數:
ManagementObjectSearcher(string state)
功能:構造函數
參數:
state:查詢語句,如select * from <Name>
get
功能:調用指定的WMI查詢並返回結果集合
注:
常用的<Name>:
// 硬件
Win32_Processor, // CPU 處理器
Win32_PhysicalMemory, // 物理內存條
Win32_Keyboard, // 鍵盤
Win32_PointingDevice, // 點輸入設備,包括鼠標。
Win32_FloppyDrive, // 軟盤驅動器
Win32_DiskDrive, // 硬盤驅動器
Win32_CDROMDrive, // 光盤驅動器
Win32_BaseBoard, // 主板
Win32_BIOS, // BIOS 芯片
Win32_ParallelPort, // 並口
Win32_SerialPort, // 串口
Win32_SerialPortConfiguration, // 串口配置
Win32_SoundDevice, // 多媒體設置,一般指聲卡。
Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP)
Win32_USBController, // USB 控制器
Win32_NetworkAdapter, // 網絡適配器
Win32_NetworkAdapterConfiguration, // 網絡適配器設置
Win32_Printer, // 打印機
Win32_PrinterConfiguration, // 打印機設置
Win32_PrintJob, // 打印機任務
Win32_TCPIPPrinterPort, // 打印機端口
Win32_POTSModem, // MODEM
Win32_POTSModemToSerialPort, // MODEM 端口
Win32_DesktopMonitor, // 顯示器
Win32_DisplayConfiguration, // 顯卡
Win32_DisplayControllerConfiguration, // 顯卡設置
Win32_VideoController, // 顯卡細節。
Win32_VideoSettings, // 顯卡支持的顯示模式。
// 操作系統
Win32_TimeZone, // 時區
Win32_SystemDriver, // 驅動程序
Win32_DiskPartition, // 磁盤分區
Win32_LogicalDisk, // 邏輯磁盤
Win32_LogicalDiskToPartition, // 邏輯磁盤所在分區及始末位置。
Win32_LogicalMemoryConfiguration, // 邏輯內存配置
Win32_PageFile, // 系統頁文件信息
Win32_PageFileSetting, // 頁文件設置
Win32_BootConfiguration, // 系統啓動配置
Win32_ComputerSystem, // 計算機信息簡要
Win32_OperatingSystem, // 操作系統信息
Win32_StartupCommand, // 系統自動啓動程序
Win32_Service, // 系統安裝的服務
Win32_Group, // 系統管理組
Win32_GroupUser, // 系統組帳號
Win32_UserAccount, // 用戶帳號
Win32_Process, // 系統進程
Win32_Thread, // 系統線程
Win32_Share, // 共享
Win32_NetworkClient, // 已安裝的網絡客戶端
Win32_NetworkProtocol, // 已安裝的網絡協議
ManagementObjectCollection類:表示通過WMI檢索到的管理對象的不同集合,包括ManagementObject和ManagementClass。
ManagementObject類:用於遍歷ManagementObjectSearcher類函數返回的集合。提供了通過下標訪問屬性的方法。
函數:
InvokeMethod(string methodName,ManagementBaseObject inParametes,InvokeMethodOptions options)
功能:對WMI對象調用方法
參數:
methodName:要執行的方法的名稱
inParametes:保存方法的輸入參數的ManagementBaseObject
options:包含有關執行方法的附加選項
代碼實例:
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Thread");
foreach(ManagementObject ot in searcher.Get())
{
Console.WriteLine(ot);
foreach(PropertyData pc in ot.Properties)
{
Console.WriteLine(pc.Name + ":\t" + pc.Value);
}
}
Directory類:用於文件夾的典型操作,如複製、移動、重命名、創建和刪除等。另外,也可用於獲取和設置與目錄的創建、訪問及寫入操作相關的DateTime信息。
常用方法及說明:
屬性:
AvailableFreeSpace
指示驅動器上的可用空閒空間總量(以字節爲單位)。
System_CAPS_pubproperty DriveFormat
獲取文件系統的名稱,例如 NTFS 或 FAT32。
System_CAPS_pubproperty DriveType
獲取驅動器類型,如 CD-ROM、可移動、網絡或固定。
System_CAPS_pubproperty IsReady
獲取一個指示驅動器是否已準備好的值。
System_CAPS_pubproperty Name
獲取驅動器的名稱,如 C:\。
System_CAPS_pubproperty RootDirectory
獲取驅動器的根目錄。
System_CAPS_pubproperty TotalFreeSpace
獲取驅動器上的可用空閒空間總量(以字節爲單位)。
System_CAPS_pubproperty TotalSize
獲取驅動器上存儲空間的總大小(以字節爲單位)。
System_CAPS_pubproperty VolumeLabel
獲取或設置驅動器的卷標。
方法:
Equals(Object)
確定指定的對象是否等於當前對象。(繼承自 Object。)
System_CAPS_pubmethodSystem_CAPS_static GetDrives()
檢索計算機上的所有邏輯驅動器的驅動器名稱。
System_CAPS_pubmethod GetHashCode()
作爲默認哈希函數。(繼承自 Object。)
System_CAPS_pubmethod GetType()
獲取當前實例的 Type。(繼承自 Object。)
System_CAPS_pubmethod ToString()
將驅動器名稱作爲字符串返回。(覆蓋 Object.ToString()。)
dns類:提供簡單的域名解析功能。
函數:
GetHostByName:獲取指定dns主機名的dns信息。
GetHostName:獲取本地計算機的主機名。
IPHostEntry類:作爲Internet主機地址信息提供容器。
屬性:
AddressList:獲取或設置與主機關聯的ip地址列表。
SystemInformation 類:winform下可用。提供 static 屬性,該屬性可用於獲取當前系統環境的有關信息。該類提供對信息(例如,Windows 顯示元素大小、操作系統設置、網絡可用性和系統上安裝的硬件的功能)的訪問。此類無法實例化。
VirtualScreen:取得當前屏幕的分辨率。
Application類:提供 static 方法和屬性以管理應用程序,例如啓動和停止應用程序、處理 Windows 消息的方法和獲取應用程序信息的屬性。
屬性:
Network:判斷是否存在網絡連接。
ExecutablePath:取得本應用程序可執行文件路徑和可執行文件名稱。
方法:
SetSuspendState:請求系統掛起或休眠
參數:
(1)PowerState:指示要轉換到的目標電源活動模式的PowerState
(2)bool:若要立即掛起,則爲true,否則向每個應用程序發送掛起請求
(3)bool:爲true時,可在發生喚醒事件是禁止將系統的電源狀態恢復爲活動狀態;爲false時則在發生喚醒事件是允許將系統的電源狀態恢復爲活動狀態
更多信息:https://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.aspx
WindowsPrincipal類:允許代碼檢查window用戶的windows組成員身份。
方法:
IsInRole 確定當前主體是否屬於指定的windows用戶組
參數:WindowsBuiltInRole枚舉值之一
代碼示例:
AppDomain domain = Thread.GetDomain();
domain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);//將操作系統組映射到角色
WindowsPrincipal pri = (WindowsPrincipal)Thread.CurrentPrincipal;
if (pri.IsInRole(WindowsBuiltInRole.Administrator))
{
Console.WriteLine("Administrator");
}
獲取日誌信息
EventLogEntryCollection collection = eventLog1.Entries;
label1.Text = "";
foreach(EventLogEntry entry in collection)
{
label1.Text += "事件:" + entry.InstanceId.ToString()+"\n";
}
ExitCode 獲取關聯進程終止時指定的值。
ExitTime 獲取關聯進程退出的時間。
Handle 獲取關聯進程的本機句柄。
HandleCount 獲取由進程打開的句柄數。
HasExited 獲取指示關聯進程是否已終止的值。
Id 獲取關聯進程的唯一標識符。
MachineName 獲取關聯進程正在其上運行的計算機的名稱。
MainModule 獲取關聯進程的主模塊。
MainWindowHandle 獲取關聯進程主窗口的窗口句柄。
MainWindowTitle 獲取進程的主窗口標題。
Modules 獲取已由關聯進程加載的模塊。
PriorityClass 獲取或設置關聯進程的總體優先級類別。
ProcessName 獲取該進程的名稱。
StartInfo 獲取或設置要傳遞給 Process 的 Start 方法的屬性。
StartTime 獲取關聯進程啓動的時間。
VirtualMemorySize64 獲取爲關聯進程分配的虛擬內存量(以字節爲單位)。
CloseMainWindow 通過向進程的主窗口發送關閉消息來關閉擁有用戶界面的進程。
GetCurrentProcess 獲取新的 Process 組件並將其與當前活動的進程關聯。
GetProcessById 返回新的 Process 組件(給定本地計算機上某個進程的標識符)。
GetProcesses 爲本地計算機上的每個進程資源創建一個新的 Process 組件。
GetProcessesByName創建新的 Process 組件的數組,並將它們與本地計算機上共享指定的進程名稱的所有進程資源關聯。
Kill() 立即停止關聯的進程。
Refresh() 放棄已緩存到進程組件的關聯僅存的任何相關信息。
Start() 啓動(或重用)此 Process 組件的 StartInfo 屬性指定的進程資源,並將其與該組件關聯。
Process mypro = new Process();
mypro.StartInfo.FileName = "cmd.exe";
mypro.StartInfo.UseShellExecute = false;
mypro.StartInfo.RedirectStandardInput = true;
mypro.StartInfo.RedirectStandardOutput = true;
mypro.StartInfo.RedirectStandardError = true;
mypro.StartInfo.CreateNoWindow = true;
mypro.Start();
mypro.StandardInput.WriteLine("shutdown -r -t 0");
ServiceController[] names = ServiceController.GetServices();
foreach(ServiceController controller in names)
{
Console.WriteLine(controller.ServiceName);
}
/// <summary>
/// 關閉或重啓遠程計算機
/// </summary>
/// <param name="doinfo">要執行的操作命令</param>
private void CloseComputer(string doinfo)
{
ConnectionOptions op = new ConnectionOptions();//創建ConnectionOptions對象
op.Username = textBox4.Text;//設置遠程機器用戶名
op.Password = textBox3.Text;//設置遠程機器登錄密碼
//創建ManagementScope對象
ManagementScope scope = new ManagementScope("\\\\" + textBox2.Text + "\\root\\cimv2:Win32_Service", op);
try
{
scope.Connect();//連接遠程對象
ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");//實例化ObjectQuery對象
//創建ManagementObjectSearcher對象
ManagementObjectSearcher query1 = new ManagementObjectSearcher(scope, oq);
ManagementObjectCollection queryCollection1 = query1.Get();//得到WMI控制
foreach (ManagementObject mobj in queryCollection1)
{
string[] str = { "" };
mobj.InvokeMethod(doinfo, str);
}
}
catch (Exception ey)
{
MessageBox.Show(ey.Message);
}
}