在一个局域网内,如何控制其他机器的开机、关机,并且运行相关程序?

解决方案 »

  1.   

    在Coms里设置即可,但必须的主板支持才行。
      

  2.   

    用个Server和client不就好了,在其他机器上装Server,控制机上装client,不过涉及知识较多,比如不同操作系统(98,2000)的关机操作就不同。
      

  3.   

    CMOS设置是在硬件方面,如何通过软件控制?让它关机就可以关机,让它开机就可以开机。楼上先生说,装Server和Client,请能否再详细点?不同的操作系统调用的参数不同,这个我知道,前面的就不懂,请再详细点谢谢
      

  4.   

    跟你推荐一个软件"PCAnywhere",很好玩的,你试试。你只要在你的机子上装一个主控端,在你要控制的机子上装一个被控端就可以了.
      

  5.   

    主板和PCI网卡同时支持,激活WakeOnLAN就可以了代码如下program rwu;{$APPTYPE CONSOLE}uses
      SysUtils, WinSock;const
      LEN_PHYSADDR = 6;var
      WSAData: TWSAData;
      MSocket: TSocket;
      SockAddrIn: TSockAddrIn;
      RetVal, OptVal, i: Integer;
      MacAddr: array[0..5] of Byte;
      MagicData: array[0..101] of Byte;
      Position: Longint;
      SAddr: string;{$R VERSION.RES}function CheckWinSockResult(ResultCode: Integer; const FuncName: string): Integer;
    begin
         if ResultCode <> 0 then
         begin
              Result := WSAGetLastError;
              Writeln(Format(#13#10'Windows socket error: %s (%d), on API ''%s''.',
                            [SysErrorMessage(Result), Result, FuncName]));
              Halt;
         end else Result := 0;
    end;begin
         if ParamCount <> 1 then
         begin
              Writeln(#13#10'Remote Wake Up.'#13#10#13#10 +
                      'Usage: rwu ethernetaddress'#13#10#13#10 +
                      'Example: rwu 00-B0-D0-15-86-B4'#13#10#13#10 +
                      'This program is freeware.'#13#10 +
                      'Author: Vadim Crits'#13#10);
              Halt;
         end;
         try
            SAddr := Paramstr(1);
            if Length(SAddr) <> 17 then Abort;
            for i := 1 to Length(SAddr) do
                if i in [3, 6, 9, 12, 15] then
                   if SAddr[i] <> '-' then Abort;
            for i := 0 to High(MacAddr) do
            begin
                 if Pos('-', SAddr) > 0 then
                    MacAddr[i] := StrToInt(HexDisplayPrefix + Copy(SAddr, 1, Pos('-', SAddr) - 1))
                 else
                    MacAddr[i] := StrToInt(HexDisplayPrefix + SAddr);
                 Delete(SAddr, 1, Pos('-', SAddr));
            end;
         except
            Writeln(#13#10'Invalid Ethernet address.');
            Halt;
         end;
         CheckWinSockResult(WSAStartup($0101, WSAData), 'WSAStartup');
         MSocket := socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
         if MSocket = INVALID_SOCKET then CheckWinSockResult(MSocket, 'socket');
         OptVal := 1;
         CheckWinSockResult(setsockopt(MSocket, SOL_SOCKET, SO_BROADCAST,
                            PChar(@OptVal), SizeOf(OptVal)), 'setsockopt');
         FillChar(MagicData, SizeOf(MagicData), $FF);
         Position := LEN_PHYSADDR;
         while Position < SizeOf(MagicData) do
         begin
              Move(MacAddr, Pointer(Longint(@MagicData) + Position)^, LEN_PHYSADDR);
              Inc(Position, LEN_PHYSADDR);
         end;
         SockAddrIn.sin_family := AF_INET;
         SockAddrIn.sin_addr.S_addr := Longint(INADDR_BROADCAST);
         RetVal := sendto(MSocket, MagicData, SizeOf(MagicData), 0, SockAddrIn, SizeOf(SockAddrIn));
         if RetVal = SOCKET_ERROR then CheckWinSockResult(RetVal, 'sendto');
         CheckWinSockResult(closesocket(MSocket), 'closesocket');
         CheckWinSockResult(WSACleanup, 'WSACleanup');
    end.
      

  6.   

    使用网卡开机只能用MAC地址,那个IP没有意义的,也没有IP的存在
    而其只能在LAN局域网使用的
      

  7.   

    通过硬件或网络来实现控制不太好实现因为特定的硬件不一定都支持.
    我觉得还是通过软件来管理比较好一些.网络管理软件或称远程控制软件都可以完成这些功能.
    如果是出于恶意的,
    那就叫木马了,PcAanywhere确实挺好的你可以试试。