找回密码
 加入
搜索
查看: 17463|回复: 47

[系统综合] 免重启修改计算机和工作组

 火... [复制链接]
发表于 2013-1-18 23:24:20 | 显示全部楼层 |阅读模式
本帖最后由 ceoguang 于 2013-2-14 12:35 编辑

都论坛找的代码,整合了一下。 现在才发觉发错地方了,请版主移贴。
经测试绝对有用,环境:win7 x64系统 修改计算机名后,共享文件夹后,在虚拟机(XP系统)里面,能正常访问共享的文件夹。(新计算机名)
#NoTrayIcon
Opt('GUIOnEventMode', 1);OnEvent模式

$hParentWin = GUICreate('xxx', 206, 80)
$Button1 = GUICtrlCreateButton('计算机名', 18, 28, 80)
$Button2 = GUICtrlCreateButton('工作组名', 112, 28, 80)
GUISetOnEvent(-3, 'gui')
GUICtrlSetOnEvent($Button1, 'gui')
GUICtrlSetOnEvent($Button2, 'gui')
GUISetState(@SW_SHOW)
While 1
        Sleep(100)
        WEnd
        Func gui()
        Switch @GUI_CtrlId
                Case -3
                        Exit
                Case $Button1
                        $user = InputBox("xxx","请输入想要修改的计算机名:","","","-1","-1",default,default)
If @error =1 Then 
        
        Else
 _ComputerName($user)
  MsgBox(64,"当前计算机名",$user)
EndIf
                                Case $Button2
                        $user = InputBox("xxx","请输入想要修改的工作组名:","","","-1","-1",default,default)
If @error =1 Then 
        
        Else
_SetWorkGroup($user)
 MsgBox(64,"当前工作组",$user)
 EndIf
                EndSwitch
EndFunc   ;==>gui

Func _ComputerName($comname)


        Local $hklm1 = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet"


        Local $hklm2 = "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001"


        RegWrite($hklm1 & "\Control\ComputerName\ComputerName","ComputerName","REG_SZ",$comname)


        RegWrite($hklm1 & "\Services\Tcpip\Parameters","NV Hostname","REG_SZ",$comname)


        RegWrite($hklm1 & "\Services\Tcpip\Parameters","Hostname","REG_SZ",$comname)


        RegWrite($hklm2 & "\Control\ComputerName\ComputerName","ComputerName","REG_SZ",$comname)


        RegWrite($hklm2 & "\Services\Tcpip\Parameters","NV Hostname","REG_SZ",$comname)


        RegWrite($hklm2 & "\Services\Tcpip\Parameters","Hostname","REG_SZ",$comname)

 DllCall("Userenv.dll", "int", "RefreshPolicyEx", "int", 1, "int", 1)
      

EndFunc


 
Func _SetWorkGroup($WorkGroup)
;================================
;用法:_SetWorkGroup(工作组名称)
;注意:此函数需要WMI服务的支持。
;作者:Make By Sanhen
;================================
Local $objNetwork,$strComputer
 
$objNetwork = ObjCreate("WScript.Network")
$strComputer = $objNetwork.ComputerName
$objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\" & _
    $strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" _
    & $strComputer & "'")
 Return  $objComputer.JoinDomainOrWorkGroup($WorkGroup)
 
EndFunc
发表于 2013-1-18 23:41:57 | 显示全部楼层
修改注册表?
发表于 2013-1-19 00:02:03 | 显示全部楼层
是提问还是分享~
发表于 2013-1-19 00:07:26 | 显示全部楼层
代码中有个刷新组策略的api,这个不错~
发表于 2013-1-19 06:27:08 | 显示全部楼层
不错,谢谢分享
发表于 2013-1-19 07:51:35 | 显示全部楼层
這個方法該學習!
发表于 2013-1-19 09:36:31 | 显示全部楼层
学习一下,谢谢分享!!!
发表于 2013-1-19 19:05:38 | 显示全部楼层
感谢分享,学习来啦
发表于 2013-1-19 22:37:12 | 显示全部楼层
本帖最后由 lin6051 于 2013-1-19 22:44 编辑

刷新api就不用重启?

这样改的,计算机名,实际是没改,重启才真的生效
发表于 2013-1-19 23:25:13 | 显示全部楼层
向楼主学习....
 楼主| 发表于 2013-1-19 23:35:29 | 显示全部楼层
回复 9# lin6051

我win7_x64   xp都试了可以啊,朋友你把需要连接的电脑网卡禁用启用一下试试。
 楼主| 发表于 2013-1-19 23:36:43 | 显示全部楼层
回复 10# 虫子樱桃


    大神,你别逗我了。
发表于 2013-1-23 15:43:46 | 显示全部楼层
看看 学习一下
发表于 2013-1-23 16:14:06 | 显示全部楼层
回复下看内容~~
发表于 2013-1-23 17:20:14 | 显示全部楼层
这个来观摩学习。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 02:50 , Processed in 0.079608 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表