none
大家好,关于远程控制的一个问题 RRS feed

  • 问题

  • 我知道局域网中一电脑的IP,他的电脑没设密码,我想通过编程关闭他的的电脑,下面的是我的代码,总提示RPC服务器不可用,我知道可能是防火墙的问题,但不知道解决的办法,以下是我的代码(摘自C#范例宝典)

    using System.Management;
    /***************提示服务器不可用,可能是防火墙的原因,但不知道怎么解决********************/
    namespace ControlComputerLongDistance
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void CloseComputer(string strname, string strpwd, string ip, string doinfo)
            {
                try
                {
                    ConnectionOptions op = new ConnectionOptions();
                    op.Username = strname;
                    op.Password = strpwd;
                    ManagementScope scope = new ManagementScope("\\\\" + ip + "\\root\\cimv2:Win32_Service", op);
                    try
                    {
                        scope.Connect();
                        System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");
                        ManagementObjectSearcher query1 = new ManagementObjectSearcher(scope, oq);
                        ManagementObjectCollection queryCollection1 = query1.Get();
                        foreach (ManagementObject mobj in queryCollection1)
                        {
                            string[] str = { "" };
                            mobj.InvokeMethod(doinfo, str);
                        }
                        MessageBox.Show("操作成功");
                    }
                    catch (Exception ey)
                    {
                        MessageBox.Show(ey.Message);
                        this.btnCloseComputer.PerformClick();
                    }
                }
                catch (Exception ey)
                {
                    MessageBox.Show(ey.Message);
                }
              
            }

            private void btnCloseComputer_Click(object sender, EventArgs e)
            {
                CloseComputer(this.txtUserName.Text,this.txtPassedWord.Text,this.txtIPadress.Text,"Shutdown");
            }
        }

     

    谢谢大家了

    2010年3月31日 12:18

答案

  • 要使用 WMI 的话,需要:

    - 目标计算机上 RPC 服务以及 WMI 服务已经启动 (默认)
    - WMI 的防火墙例外已经开启

    如果 RPC 服务起不来,您的 Windows 安装可能遭到损坏,您或为软件盗版的受害者,在其他 RPC 以及 WMI 服务可用的计算机尝试看,一般应不会出现问题。


    Mark Zhou
    2010年4月1日 8:08

全部回复

  • 你好!

         首先检查一下防火墙的设置,然后再检查一下RPC服务是否启动了!


    周雪峰
    2010年3月31日 12:35
    版主
  • 我将我的电脑上的防火墙和目标电脑防火墙都退了

    目标计算机需要启动RPC服务吗?

    2010年3月31日 12:41
  • 我将我的电脑上的防火墙和目标电脑防火墙都退了

    目标计算机需要启动RPC服务吗?

    2010年3月31日 12:42
  • Hi,

    目标计算机需要启动RPC服务.

    2010年3月31日 13:09
  • sanme98你好,我将目标计算机启动RPC服务,还是提示RPC服务不可用,这该如何是好
    2010年3月31日 13:33
  • Hi,

    没见过。它给什么错误讯息?

    还有目标PC是用什么Windows?

    2010年3月31日 13:49
  • 要使用 WMI 的话,需要:

    - 目标计算机上 RPC 服务以及 WMI 服务已经启动 (默认)
    - WMI 的防火墙例外已经开启

    如果 RPC 服务起不来,您的 Windows 安装可能遭到损坏,您或为软件盗版的受害者,在其他 RPC 以及 WMI 服务可用的计算机尝试看,一般应不会出现问题。


    Mark Zhou
    2010年4月1日 8:08
  • Hi,

    请在你的目标PC的cmd跑 sfc /scannow

    可解决Windows系统文件坏的问题。

    2010年4月1日 8:39
  • HI,sanme98,这种使用WMI的远程控制,只要知道目标计算机的IP和用户名及密码,就可以关闭他的电脑,是吗?目标计算机不需要运行什么程序吧?
    2010年4月1日 9:28
  • HI,mazhou,这种使用WMI的远程控制,只要知道目标计算机的IP和用户名及密码,就可以关闭他的电脑,是吗?目标计算机不需要运行什么程序吧?
    2010年4月1日 9:29
  • 是的。具备管理员权限的用户可以直接通过 WMI 关机。
    Mark Zhou
    2010年4月1日 9:30