我用C#写了个小程序,通过net send 给局域网的机器发 消息,也就是 系统自带的 信使消息  但是这就有个问题了,如果我知道对方IP 但他却没有开启 messenger 服务 我就比较郁闷了,一个简单的 问题: 不管对方是否开启messenger 服务,我不真正给他发消息 通过什么方式 可以得知对方的messenger是否开启呢?只获取开启状态,别的请不要回答了 谢谢 问题解决就散分 谢谢各位高手

解决方案 »

  1.   

    Windows 2003 Sp1和Windows XP SP2之后messenger服务默认是关闭的,就是为了防止人从internet发广告。除非你有远程管理员权限或者在远程计算机上以管理员身份运行程序,否则你不能获取服务状态信息。
      

  2.   

    啊!!!!!!!传说中的MVP啊
    谢谢你!
    如果对方关闭messenger服务,我会收到发送失败的消息的,我可能因为要同时发给多个人,所以 如果某个人发送失败 就会影响到给其他人发 很是麻烦 我现在就是想在Form_load里对我想要发的所有IP 全部遍历一下 开启服务的才可发 其他的关掉 发送失败的话 是有ExitCode传回的啊  我能判断么??
    再次感谢
      

  3.   

    你可以使用ServiceController类对服务进行管理,本地或者远程都可以。
      

  4.   

    ServiceController cs = new ServiceController();
    cs.MachineName = "localhost";
    cs.ServiceName = "Messenger";
    cs.Refresh();
    if (cs.Status == ServiceControllerStatus.Running)
    {
    //该服务在运行,做一些你想干的事情。
    }
      

  5.   

    WMI可以,去我的blog看看~~http://blog.csdn.net/lhfzd2004
    http://blog.csdn.net/lhfzd2004/archive/2007/08/01/1721687.aspx 第5个功能点
      

  6.   

    message实现这个功能可能不切实际还是用别的办法吧
      

  7.   

    感謝hanjun1024 和 lhfzd2004 的回答,兩者我分別試了一下
    對于hanjun1024的方法 可以 很方便取得 messenger服務的開啟狀態,但是在獲取局域網其他電腦的messenger服務的開啟狀態的時候  提示 沒有足夠的權限打開 服務管理員 功能 這個問題可以解決么?對于lhfzd2004 的方法 可以取得本機的所有 服務 的開啟狀態  ,但是我找了半天 似乎沒有指定 查詢其他機器 的語法 比如指定 機器名 或者 IP 什么的  那 又有 什么辦法么再次感謝你們  這個問題解決掉 馬上 結帖
      

  8.   

    无法打开计算机“localhost”上的服务控制管理器。此操作可能需要其他特权。
      

  9.   


    无法打开计算机“localhost”上的服务控制管理器。此操作可能需要其他特权。