通过注册表修改开机启动项:
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);
}
}