请问各位大虾    
   在远程控制的编程中   是否必须将控制的命令 比如注册表的修改 利用一个控制代码进行中间转换 
 就是说 定义00001为关机  在客户端收到00001 然后实现关机   能否直接将关机的指令通过数据的形式发送到客户端 
实现关机

解决方案 »

  1.   

    lz没有必要重复造轮子。你可以看下 pstools,一组 commandline tools,其中的 psexec 就可以远程执行命令,配合 reg 命令直接就可以操纵注册表了。
      

  2.   

    我说了,可以使用 WCF/Web Service底层还是使用套接字。但是它屏蔽了很多细节,比如端口啦、监听啦、异步发送啦、数据序列化啦之类琐碎的事情。别看了名字发怵,Google,WCF很简单的。
      

  3.   

    示例代码就是将AS0010定义为隐藏服务器硬盘盘符.
    进行中间转换  
    是否能实现当点击此按钮时  发送到客户端的不是控制代码 而是后面的修改注册表的代码
    //控制码为as0010,隐藏服务器硬盘盘符.
    if(ss=="as0010")
    {
    try
    {
    key1=reg.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",true);
                            key1.SetValue("NoDrives",12);
    key1.Close();
    messagestring=messagestring+"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer键值NoDrives被修改!请将它置为0";
    }
    catch
                        {
                        }
    if(key1==null)
    {
    try
    {
    RegistryKey  key2=reg.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer");                           
    key2.SetValue("NoDrives",12);
    key2.Close();
    messagestring=messagestring+"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer键值NoDrives被修改!请将它置为0";
    }
    catch
                            {
                            }
    }
    string str="ctr";
    byte[]  newbyte=System.Text.Encoding.ASCII.GetBytes(str.ToCharArray());
    socket.Send(newbyte,newbyte.Length,0);
    }