• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中控制远程计算机的服务的方法

C#中控制远程计算机的服务的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#计算机,计算机二级c#,c#计算机代码,c#获取计算机名,c#获取计算机名称等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问,如System.ServiceProcess命名空间下面的ServiceController 类,System.Management下面的一些WMI操作的类。虽然用ServiceController可以很方便的实现对服务的控制,而且很直观、简洁和容易理解。但是我认为他的功能同通过WMI来操作服务相比,那可能就有些单一了,并且对多个服务的操作可能就比较麻烦,也无法列出系统中的所有服务的具体数据。这里要讲的就是如何使用System.Management组件来操作远程和本地计算机上的服务。 
WMI作为Windows 2000操作系统的一部分提供了可伸缩的,可扩展的管理架构.公共信息模型(CIM)是由分布式管理任务标准协会(DMTF)设计的一种可扩展的、面向对象的架构,用于管理系统、网络、应用程序、数据库和设备。Windows管理规范也称作CIM for Windows,提供了统一的访问管理信息的方式。如果需要获取详细的WMI信息请读者查阅MSDN。System.Management组件提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统、设备和应用程序设置检测点有关的。 
但是上面并不是我们最关心的,下面才是我们需要谈的话题。 
毫无疑问,我们要引用System.Management.Dll程序集,并要使用System.Management命名空间下的类,如ManagementClass,ManagementObject等。下面用一个名为Win32ServiceManager的类把服务的一些相关操作包装了一下,代码如下: 
using System; 
using System.Management; 
namespace ZZ.Wmi 
{ 
public class Win32ServiceManager 
{ 
private string strPath; 
private ManagementClass managementClass; 
public Win32ServiceManager():this(".",null,null) 
{ 
} 
public Win32ServiceManager(string host,string userName,string password) 
{ 
this.strPath = "\\\\"+host+"\\root\\cimv2:Win32_Service"; 
this.managementClass = new ManagementClass(strPath); 
if(userName!=null&&userName.Length>0) 
{ 
ConnectionOptions connectionOptions = new ConnectionOptions(); 
connectionOptions.Username = userName; 
connectionOptions.Password = password; 
ManagementScope managementScope = new ManagementScope( "\\\\" +host+ "\\root\\cimv2",connectionOptions) ; 
this.managementClass.Scope = managementScope; 
} 
} 
// 验证是否能连接到远程计算机 
public static bool RemoteConnectValidate(string host,string userName,string password) 
{ 
ConnectionOptions connectionOptions = new ConnectionOptions(); 
connectionOptions.Username = userName; 
connectionOptions.Password = password; 
ManagementScope managementScope = new ManagementScope( "\\\\" +host+ "\\root\\cimv2",connectionOptions) ; 
try 
{ 
managementScope.Connect(); 
} 
catch 
{ 
} 
return managementScope.IsConnected; 
} 
// 获取指定服务属性的值 
public object GetServiceValue(string serviceName,string propertyName) 
{ 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
return mo[propertyName]; 
} 
// 获取所连接的计算机的所有服务数据 
public string [,] GetServiceList() 
{ 
string [,] services = new string [this.managementClass.GetInstances().Count,4]; 
int i = 0; 
foreach(ManagementObject mo in this.managementClass.GetInstances()) 
{ 
services[i,0] = (string)mo["Name"]; 
services[i,1] = (string)mo["DisplayName"]; 
services[i,2] = (string)mo["State"]; 
services[i,3] = (string)mo["StartMode"]; 
i++; 
} 
return services; 
} 
// 获取所连接的计算机的指定服务数据 
public string [,] GetServiceList(string serverName) 
{ 
return GetServiceList(new string []{serverName}); 
} 
// 获取所连接的计算机的的指定服务数据 
public string [,] GetServiceList(string [] serverNames) 
{ 
string [,] services = new string [serverNames.Length,4]; 
ManagementObject mo = this.managementClass.CreateInstance(); 
for(int i = 0;i<serverNames.Length;i++) 
{ 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serverNames[i]+"\""); 
services[i,0] = (string)mo["Name"]; 
services[i,1] = (string)mo["DisplayName"]; 
services[i,2] = (string)mo["State"]; 
services[i,3] = (string)mo["StartMode"]; 
} 
return services; 
} 
// 停止指定的服务 
public string StartService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
if((string)mo["State"]=="Stopped")//!(bool)mo["AcceptStop"] 
mo.InvokeMethod("StartService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
// 暂停指定的服务 
public string PauseService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
//判断是否可以暂停 
if((bool)mo["acceptPause"]&&(string)mo["State"]=="Running") 
mo.InvokeMethod("PauseService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
// 恢复指定的服务 
public string ResumeService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
//判断是否可以恢复 
if((bool)mo["acceptPause"]&&(string)mo["State"]=="Paused") 
mo.InvokeMethod("ResumeService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
// 停止指定的服务 
public string StopService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
//判断是否可以停止 
if((bool)mo["AcceptStop"])//(string)mo["State"]=="Running" 
mo.InvokeMethod("StopService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
} 
} 
在
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#重启远程计算机的代码
  • C#中控制远程计算机的服务的方法

相关文章

  • 2017-05-28C#结构体特性实例分析
  • 2017-05-28asp.net中XML如何做增删改查操作
  • 2017-05-28c# 应用事务的简单实例
  • 2017-05-28使用C#在注册表中保存信息的例子
  • 2017-05-28DevExpress中GridControl列转义的实现方法
  • 2017-05-28c#方法重写和隐藏的学习示例
  • 2017-05-28C#程序员最易犯的编程错误
  • 2017-05-28Win Form 的 Splitter 使用心得与技巧
  • 2017-05-28简介C#读取XML的两种方式
  • 2017-05-28深入理解C♯ 7.0中的Tuple特性

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c# 适配器模式
    • C# Console利用mspaint打开图像并保存的方法
    • C#中静态构造函数的几点说明介绍
    • C#中使用WinRAR实现加密压缩及解压缩文件
    • 英语单词state与status的区别
    • C# 多态性的深入理解
    • jQuery uploadify在谷歌和火狐浏览器上传失败的解决方案
    • c#启动EXE文件的方法实例
    • C#操作SQLite数据库之读写数据库的方法
    • C#静态static的用法实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有