C# 系统控制

通过注册表修改开机启动项:

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信息。

常用方法及说明:

CreateDirectory 创建指定路径中的所有目录。
Delete 删除指定的目录。
Exists 确定给定路径是否引用磁盘上的现有目录。
GetAccessControl 返回某个目录的 Windows 访问控制列表 (ACL)。
GetCreationTime 获取目录的创建日期和时间。
GetCreationTimeUtc 获取目录创建的日期和时间,其格式为协调通用时间 (UTC)。
GetCurrentDirectory 获取应用程序的当前工作目录。
GetDirectories 获取指定目录中子目录的名称。
GetDirectoryRoot 返回指定路径的卷信息、根信息或两者同时返回。
GetFiles 返回指定目录中的文件的名称。
GetFileSystemEntries 返回指定目录中所有文件和子目录的名称。
GetLastAccessTime 返回上次访问指定文件或目录的日期和时间。
GetLastAccessTimeUtc 返回上次访问指定文件或目录的日期和时间,其格式为协调通用时间 (UTC)。
GetLastWriteTime 返回上次写入指定文件或目录的日期和时间。
GetLastWriteTimeUtc 返回上次写入指定文件或目录的日期和时间,其格式为协调通用时间 (UTC)。
GetLogicalDrives 检索此计算机上格式为“<驱动器号>:\”的逻辑驱动器的名称。
GetParent 检索指定路径的父目录,包括绝对路径相对路径

DriveInfo类:提供对有关驱动器的信息的访问,使用DriveInfo类可以确定哪些驱动器可用,以及这些驱动器的类型,还可以通过查询来确定驱动器的容量和可用空闲空间,获取磁盘的文件类型、驱动器类型等。

属性:

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");
}

获取日志信息

EventLog类:主要用来提供与windows事件日志的交互。
属性:
Log 用于获取或设置读取或写入的日志名称,可以是Application,System和Security或一个自定义的日志名称,默认为""
Entries 用于获取时间日志的内容,返回EventLogEntryCollection集合,用于保留事件日志中的项。
EventLogEntryCollection类:用于定义EventLogEntry实例集合的大小和枚举值
Count 获取事件日志中的项数。
EventLogEntry 类:用于在事件日志中封装单个记录。
eventLog1.Log = "System";
EventLogEntryCollection collection = eventLog1.Entries;
label1.Text = "";
foreach(EventLogEntry entry in collection)
{
     label1.Text += "事件:" + entry.InstanceId.ToString()+"\n";
}
进程与服务:
Process类: 提供对本地和远程进程的访问,并使用户能够启动和停止本地系统进程。
属性:
BasePriority 获取关联进程的基本优先级。
ExitCode 获取关联进程终止时指定的值。
ExitTime 获取关联进程退出的时间。
Handle 获取关联进程的本机句柄。
HandleCount 获取由进程打开的句柄数。
HasExited 获取指示关联进程是否已终止的值。
Id 获取关联进程的唯一标识符。
MachineName 获取关联进程正在其上运行的计算机的名称。
MainModule 获取关联进程的主模块。
MainWindowHandle 获取关联进程主窗口的窗口句柄。
MainWindowTitle 获取进程的主窗口标题。
Modules 获取已由关联进程加载的模块。
PriorityClass 获取或设置关联进程的总体优先级类别。
ProcessName 获取该进程的名称。
StartInfo 获取或设置要传递给 Process 的 Start 方法的属性。
StartTime 获取关联进程启动的时间。
Threads 获取在关联进程中运行的一组线程。
VirtualMemorySize64 获取为关联进程分配的虚拟内存量(以字节为单位)。
方法:
Close 释放与此组件关联的所有资源。
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类: 表示 Windows 服务并允许连接到正在运行或者已停止的服务、对其进行操作或获取有关它的信息。
属性:
ServiceName:主要用于获取或设置对此实例引用的服务进行标志的名称。
Status:获取由此实例引用的服务的状态。
Start:用于启动服务。
Stop:用于停止服务。
WaitForStatus:主要用来等待服务达到指定状态。
实例:
ServiceController[] names = ServiceController.GetServices();
foreach(ServiceController controller in names)
{
        Console.WriteLine(controller.ServiceName);
}


Mutex类: 表示一个同步基元,也可用于进程间同步。
构造函数:
public Mutex(bool initiallyOwned,string name,out bool createdNew)
参数:
initiallyOwned:为true则给予调用线程已命名的系统互斥体的出世所属权。
name:互斥体名称。
createdNew:创建成功则返回true,已存在则为false。
远程控制计算机:
注1:需要手动在项目选项卡-》程序集中添加System.Management引用。
注2:需要在被控制端设置允许远程关机的权限
ConnectionOptions类:指定用于建立 WMI 连接所需的所有设置。
属性:
Username:获取或设置用于连接操作的用户名。
Password:设置为指定用户的密码。

ManagementScope类: 表示用于管理操作的范围。
函数:
ManagementScope(String path, ConnectionOptions options)
参数:
path:指定路径范围
options:使用指定选项初始化

ObjectQuery类:表示返回实例或类的管理查询。
ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");

代码实例:
/// <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);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值