局域网中有A,B,C,D,E,………………若干台机器。在A上编写一软件,设置更改后的主页后,可以将所有网络中的机器的主页即时更改为A机器上设置的主页。是否可以实现?例如,在A机器的程序中,我写入“http://www.163.com”,点更改后,B,C,D,E…………机器上的IE主页统统变为“http://www.163.com”是否可以实现?觉得1000分不够的话,您说话。多少分都成。

解决方案 »

  1.   

    可以这样做:
    第一次运行程序的时候读取注册表得到默认主页信息,将该信息保存到注册表自己定义的位置。
    然后将此信息保存到一个字符变量中作为核对所用。
    然后用Winsock建立一个UDP协议的网络服务,比如端口是7010。如:
    If Winsock1.State <> 0 Then Winsock1.Close
    Winsock1.Protocol = sckUDPProtocol
    Winsock1.Bind 7010用时钟监视定时获取注册表中的主页信息信息和保存的信息对比,当不一致时用Winsock使用
    UDP协议广播更新的信息,如:
    Winsock1.RemoteHost = "255.255.255.255"
    Winsock1.RemotePort = 7010
    Winsock1.SendData “更新主页|” & SaveURLInfo当收到网络信息时可以对相应的数据进行分析及处理,如:
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
       Dim NetInfo As String, CommandInfo() As String
       Winsock1.GetData NetInfo, vbString, bytesTotal
       CommandInfo = Split(NetInfo, "|")
       Select Case CommandInfo(0)
       Case "更新主页": Dim 注册表 As WshShell
                        Set 注册表 = New WshShell
                        注册表.RegWrite "HKEY_LOCAL_MACHINE\...",CommandInfo(1), _
                                        "REG_SZ"
       End Select
    End Sub在每一台机子上运行此程序便可实现了每台电脑修改主页的时候全部都会一起修改,
    如果想固定某台电脑,可以改一下发送的信息内容,如:Winsock1.SendData “更新主页|”& Winsock1.LocalIP & "|" & SaveURLInfo可以更具IP判断是否修改主页信息。
    好了,程序已经很明了了,自己试一试吧。
      

  2.   

    TO:SupermanKing(人类) 
    我需要的是不在其他电脑上安装任何的程序来实现修改主页。因为所有的电脑上都有还原精灵,是没有办法安装任何东西的。只能在一台电脑上操作某些程序,然后通过局域网修改其他电脑的主页。
      

  3.   

    to:SupermanKing(人类) 
    能给个具体的例子么?我不需要保存,只要能远程修改就可以
      

  4.   

    既然你能改变机器设置,最简单的办法啊.就是在主机设置个HTTP服务器,最简单的那种,然后各机器的主页指象这个地址.然后在主机主页上加个简单的跳转语句就可以.要改动这些个机器的主页时可以改动主机的跳转地址就OK,也不用什么编程.完全绿色.一劳永逸.
      

  5.   

    实现修改远程注册表是很简单的,问题就在于安全权限问题,如果你与
    对方的电脑相连权限不够高,可能会导致修改失败。
    其实不知道你会不会用API或WMI读写注册表,如果会API的话,注意一下
    RegConnectRegistry函数的使用就可以了,WMI嘛就更简单了,注意你连接
    资源的语句就可以了,就像输入正确的ADO连接远程SQL数据库语句一样。
    给一个API的例子给你吧:
    (注意:两台主机必须先相连,注意权限,如:
    "CMD /C NET \\billgates /User:Administrator 12345678")Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
    "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
    ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _
    ByVal cbData As Long) As Long
    Private Declare Function RegConnectRegistry Lib "advapi32.dll" Alias _
    "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, _
    phkResult As Long) As Long
    Private Declare Function RegCloseKey Lib "advapi32.dll" _
    (ByVal hKey As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias _
    "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
    phkResult As Long) As Long
    Private Const HKEY_CLASSES_ROOT = &H80000000
    Private Const HKEY_CURRENT_CONFIG = &H80000005
    Private Const HKEY_CURRENT_USER = &H80000001
    Private Const HKEY_DYN_DATA = &H80000006
    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Private Const HKEY_PERFORMANCE_DATA = &H80000004
    Private Const HKEY_USERS = &H80000003
    Private Sub Command1_Click()
    设置文本值 "\\billgates", "HKEY_LOCAL_MACHINE\SOFTWARE", "新文本", "哈哈"
    End SubPrivate Sub 设置文本值(服务器 As String, 注册表 As String, _
                           键名 As String, 键值 As String)
       Dim 主键箱 As Long, 注册表句柄 As Long, 分析() As String, 返回值 As Long
       Dim 注册表地址 As String, 网络句柄 As Long
       分析 = Split(注册表, "\")
       Select Case UCase(分析(0))
              Case "HKEY_CLASSES_ROOT": 主键箱 = HKEY_CLASSES_ROOT
              Case "HKEY_CURRENT_USER": 主键箱 = HKEY_CURRENT_USER
              Case "HKEY_LOCAL_MACHINE": 主键箱 = HKEY_LOCAL_MACHINE
              Case "HKEY_USERS": 主键箱 = HKEY_USERS
              Case "HKEY_CURRENT_CONFIG": 主键箱 = HKEY_CURRENT_CONFIG
              Case "HKEY_DYN_DATA": 主键箱 = HKEY_DYN_DATA
       End Select
       注册表地址 = Right(注册表, Len(注册表) - Len(分析(0)) - 1)
       返回值 = RegConnectRegistry(服务器, 主键箱, 网络句柄)
       If 返回值 = 0 Then
          返回值 = RegOpenKey(网络句柄, 注册表地址, 注册表句柄)
          If 返回值 = 0 Then
             返回值 = RegSetValueEx(注册表句柄, 键名, 0, 1, ByVal 键值, _
                                    获取文本字节大小(键值))
             RegCloseKey 注册表句柄
             If 返回值 = 0 Then
                MsgBox "成功"
             Else
                MsgBox "不能写"
             End If
          Else
             RegCloseKey 注册表句柄
             MsgBox "不能打开"
          End If
       Else
          MsgBox "不能连接"
       End If
    End SubPrivate Function 获取文本字节大小(原始文本 As String) As Long
       Dim X As Long, 字节数 As Long, 临时字符 As String
       字节数 = 0
       For X = 1 To Len(原始文本)
          临时字符 = Left(原始文本, X)
          临时字符 = Right(临时字符, 1)
          If Asc(临时字符) < 0 Then
             '处理中文
             字节数 = 字节数 + 2
          Else
             字节数 = 字节数 + 1
             '处理英文
          End If
       Next X
       获取文本字节大小 = 字节数
    End Function
      

  6.   

    方法很简单..不用软件....你在你的机器上弄个共享或者IIS然后写一个网页...假如为 index.htm在里面写如下内容
    <meta HTTP-EQUIV=REFRESH CONTENT='1; URL=新网址'>然后把其它机器的主页设置成你机器上的这个index.htm他们一打开就可以转向了..用程序......几乎不能实现...你可以去差一下局域网病毒的有关资料,或许能实现
      

  7.   

    可以看看遠程控制方面的技朮文章。
    只要能得到administrator的權限就有辦法搞定。
    PCANYWhere
    DameWare  都是這樣的﹗
      

  8.   

    通过2000控制98我没试过,但是大概理论是这样的,98在启动时会有一个网络用户帐号和密码
    让你输入,多半人都会输入自己的中文名或一些其他的名字,其实这就是Win2000中的用户帐
    号,但在Win98中不会去验证用户就让你以这个用户帐号登陆系统了,而且以这个帐号访问网
    络上的资源。至于Win98支不支持网络管理注册表,你可以这样看看。
    在Win98机启动的使用用 Administrator 用户名登陆98,然后在Win2000中运行:
    CMD /C NET USE \\WIN98计算机名 /USER:Administrator然后运行 Regedit
    在“文件”菜单中选择“连接网络注册表”,然后选择那个WIN98计算机,看能否打开,如果可
    以用API的方法绝对可以实现,如果不行,那就是98不支持了。其实如果通过WMI修改远程注册表是坑定可以的,虽然98中没有WMI,但是可以到Microsoft去下载。
    Win2000以上的系统都支持WMI,但是你的要求是Win98,呵呵,这东西已经过时了那么多年了,你
    还去考虑它,真是太....,呵呵,算了。
      

  9.   

    十分的感谢 SupermanKing(人类) 对我的帮助,不管解决没解决这个问题,我先给500分。一会你进去收好了。剩下的问题我再仔细研究研究。研究成功我再加分。