监控系统进程监测到别的应用程序是否启动或关闭Process []  process = Process.GetProcessesByName( "你的程序在任务管理器中的名称" );
   if(process.Length>1)
   {
    MessageBox.Show("已启动了一个此程序");
    Application.ExitThread();  
   }

解决方案 »

  1.   

    可以利用WMI来遍历所有程序,建议你到论坛搜索相关文章
      

  2.   

    列出系统的所有应用程序应该读取注册表hkey_local_user software目录下的所有子目录启动一个程序通过process.start("路径名");
    监测一个程序是否已经运行如何在C# 中使用WMI 实现远程查询和共享WMI 对大多数开发人员来说是一个感觉比较迷惑的东西,对我来说也是如此。直到最近看了一篇关于 .Net Management 的介绍后,才对WMI 有了一点点了解。下面就把自己的一点经验写给爱好C# 的朋友们。WMI 是一个非常强大的工具,它可以提供给我们非常强大的功能。比如在我们开发应用程序时经常需要得到本地或远程操作系统的信息。虽然看起来很平常,但是实际操作起来还是比较麻烦的,尤其当我们想要获得远程操作系统的信息时。WMI 要求开发者使用WQL 方式来访问对方。WQL 允许我们像使用SQL-LINK查询语言一样使用它。只要你知道这些类和它的字段变量,你可以很容易的得到你想要的信息。使用 WMI,使用者可以用查询精确地定义数据流。通过仅指定那些感兴趣的属性(在 SELECT 语句中)和仅检索感兴趣的实体(使用 WHERE 子句)这两项措施,查询限制了返回的数据量。例如,如果用户要检索计算机上所有小于 2 MB 的驱动器(驱动器 C、D 等):SELECT * FROM Win32_LogicalDisk WHERE FreeSpace < 2000000正如你看到的那样,使用一个简单的WMI 查询是相当容易的。为了实现这个结果,你需要在.NET 中引用System.Management 命名空间。只要你懂得一点数据库知识,我们就可以利用它操作所有我们的查询。System.Management 命名空间是 .NET 框架中的 WMI 命名空间。此命名空间包括下列类对象: ManagementObject 或 ManagementClass:分别为单个管理对象或类。 ManagementObjectSearcher:用于根据指定的查询或枚举检索 ManagementObject 或 ManagementClass 对象的集合。 ManagementEventWatcher:用于预订来自 WMI 的事件通知。 ManagementQuery:用作所有查询类的基础。下列代码向您展示了如何使用 WMI 列举远程机器上所有开启的进程。private void RemoteEnumerate_Click(object sender, System.EventArgs e){// ServerName 是对方机器的名字,也可以是 IP 地址,\\root\\cimv2 照抄就行
    ManagementPath p = new ManagementPath("\\\\ServerName\\root\\cimv2"); 
    ManagementScope ms = new ManagementScope(p);
    ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_Process");
    ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);
    ManagementObjectCollection queryCollection1 = query1.Get(); 
    foreach (ManagementObject service in queryCollection1){
    listBox1.Items.Add("Service: " + service["Name"] + " FilePath: " + service["ExecutablePath"]);
    }
      

  3.   

    VS.Net的帮助中本身就提供了一个这方面完整的例子。ms-help://MS.VSCC/MS.MSDNVS.2052/cssample/html/vcsamprocesscontroller.htmProcessController 示例说明如何为进程和服务监视生成 C# Windows 应用程序。该示例还说明下列活动: 动态地添加和移除事件处理程序。 
    使用 Process 组件以便: 
    读取本地/远程计算机上运行的进程。 
    启动本地计算机上的进程。 
    停止本地/远程计算机上的进程。 
    读取一些正在运行的进程使用的模块。 
    读取一些正在运行的进程的所有特征。 
    使用 ServiceController 组件: 
    读取本地/远程计算机上正在运行的服务和设备驱动程序。 
    启动/停止/暂停本地/远程计算机上的服务。 
    检查本地/远程计算机上服务或设备驱动程序的属性。 
    处理与使用 Process 和 ServiceController 组件相关的安全问题。 
    注意 该示例只能在 Windows NT 或 Windows 2000 操作系统上运行,这是因为 ServiceController 组件只能得到 Windows NT 平台的支持。
      

  4.   

    我照着copy了一份,用visual C#去编译,总是提示类型或命名空间名称management在类或命名空间"system"中不存在,用csc去编译的话没有任何警告,但运行时提示System.UnauthorizedAccessException:拒绝访问怎么会事呢?请教!!!
      

  5.   

    在工程(project)的引用中,右键,添加引用,把System.Management添加进来,就可以了。
      

  6.   

    我添加了,可是又报什么ManagementPath找不到,没有被包含?
    why?
    谢谢!
      

  7.   

    你参看一下这个网站上的东东:
    http://www.aspxcn.com
    或http://www.chinabs.com
    这两个网站上的其中一个好像有你问的问题的源程序。自己找一下。
      

  8.   

    TO doctorxiajian(xj):可能我们说有一些偏差了。我今天装载了整个工程,没有任何问题。包括System.Management都是自己完全带好了的。如果你是拷贝片断的话,不如直接把整个工程全部拷贝过来。如果从上面的网页不能加载工程的好,去第二张光盘的这个目录下拷贝E:\Samples\VCSharp\General\ProcessController
    e是光盘。