zoukankan      html  css  js  c++  java
  • 使用sysprep使计算机自动添加入域

    IT把所有部门的工作都自动化了,可是没有自动化自己的工作!
    老板开始推行自动化任务,首先从使用自动程序将计算机直接添加入域,不用it去输入用户名密码。
    开始研究吧。去搜索引擎上找了关键词,没有任何结果,于是考虑是否可以从计算机的注册表入手,将某些信息直接导入,虽然找出了某些相关项,想马上做个实验,但是被老板决绝了。从别的地方下手吧。
    又想到他和计算机名在一起修改的,那么是否可以用api函数赖实现呢?搜索了一下函数表,只能找到修改计算机名的函数,找不到修改域的。
    被逼无奈,从google得英文论坛找吧。有一些结果,但是看不懂啊(技术上,既不是编写的程序又不是应用程序),而且主要是问这个东西为什么无法加入域,没关系,顺杆爬!几个提及的词语为sysprep,什么东西啊,没接触过,查了一下中文的搜索引擎。哦!!少见多怪,原来是windowsXP的工具路径为SUPPORT\TOOLS\deploy.cab
    好了开始查一下他的资料和使用说明把。大概研究了一下,这个东西是恢复系统安装的小程序,(没有太深入)使用它将系统的配置信息写成inf文件,然后使用参数将系统重新封装。重启系统后,系统进入安装程序,一般无需人为干预,也不用插cd。
    由于,没有太多时间研究这个东西具体怎么使用,并且发挥各大作用,只是目前达到了我的要求,下面写出整体过程。
    解压cab文件到一台正常的计算机上,然后使用setupmgr.exe向导程序配置inf信息,主要是在加入域的表单中输入相关的用户名和密码。他一定要有权限加入域。而且最好是只有加入域的权限,不能登陆的限制,因为它的用户名与密码是明文的方式写在配置文件中。
    做好之后,一个vbs文件,输出一个inf文件,可以在vbs中加入对话框要求用户输入相关信息,比如计算机名等。在制作一个bat文件,建立在c盘一个sysprep文件夹,拷贝sysprep.exe和sysprepcl.exe文件到该文件夹内。然后启动命令c:\sysprep\sysprep -reseal -mini -nosidgen -quiet -reboot
    这样便可以进行无人干预安装。最后做一个autorun的文件。这样把这些文件可到cd后用户便可以自动运行程序。
    下面公布源代码(没什么技术含量)
    1、autorun.inf
    [AutoRun]
    open=Addtodomain.bat
    2、addotdomain.bat
    @echo off
    echo You will join MYDOMAIN domain.
    pause
    md c:\sysprep
    copy sysprep\*.* c:\sysprep
    addtodomain.vbs
    c:\sysprep\sysprep -reseal -mini -nosidgen -quiet -reboot
    3、addtodomain.vbs
    pcname=inputbox("Please Input Your PC Name","PC Name")
    if pcname="" then
    msgbox "Your Full Name will be set to default!"
    pcname="*"
    end if
    fullname=inputbox("Please Input Your Full Name","PC Name")
    if fullname="" then
    msgbox "Your Full Name will be PC!"
    fullname="PC"
    end if

    orgname=inputbox("Please Input Your ORG Name","PC Name")
    if orgname="" then
    msgbox "Your Full Name will be OK!"
    orgname="OK"
    end if


    Const ForWriting = 2
    Const create = True
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile ("c:\sysprep\sysprep.inf",ForWriting,create)
    strResponses = objTextFile.Writeline(";SetupMgrTag")
    objTextFile.Writeline("[Unattended]")
    objTextFile.Writeline("OemSkipEula=Yes")
    objTextFile.Writeline("InstallFilesPath=C:\sysprep\i386")
    objTextFile.Writeline("TargetPath=\WINDOWS")
    objTextFile.Writeline("")
    objTextFile.Writeline("[GuiUnattended]")
    objTextFile.Writeline("AdminPassword=*")
    objTextFile.Writeline("EncryptedAdminPassword=NO")
    objTextFile.Writeline("OEMSkipRegional=1")
    objTextFile.Writeline("TimeZone=210")
    objTextFile.Writeline("OemSkipWelcome=1")
    objTextFile.Writeline("")
    objTextFile.Writeline("[UserData]")
    objTextFile.Writeline("ProductKey=")
    objTextFile.Writeline("FullName="&fullname)
    objTextFile.Writeline("OrgName="&orgname)
    objTextFile.Writeline("ComputerName="&pcname)
    objTextFile.Writeline("")
    objTextFile.Writeline("[Identification]")
    objTextFile.Writeline("JoinDomain=mydomain")
    objTextFile.Writeline("DomainAdmin=addcomp")
    objTextFile.Writeline("DomainAdminPassword=111")
    objTextFile.Writeline("")
    objTextFile.Writeline("[Networking]")
    objTextFile.Writeline("InstallDefaultComponents=Yes")
    objTextFile.Writeline("")
    objTextFile.Writeline("[Branding]")
    objTextFile.Writeline("BrandIEUsingUnattended=Yes")
    objTextFile.Writeline("")
    objTextFile.Writeline("[Proxy]")
    objTextFile.Writeline("Proxy_Enable=0")
    objTextFile.Writeline("Use_Same_Proxy=0")
    objTextFile.Close
    4、文件夹sysprep
    sysprep.exe和sysprepcl.exe
    有一个小问题,好像运行之后,要求激活系统,但是不知不觉就不需要了,奇怪!我用的都是正版授权的系统。
    感觉有点杀鸡用牛刀的意思了。
    有机会慢慢研究一下这个东西。
    其实做成ghost感觉会更好。
    待续〉〉〉〉〉

  • 相关阅读:
    关于webpack的cdn配置
    谁都能听懂的Redux+Redux-Saga超级傻瓜教程
    记一个react拖动排序中的坑:key
    es6 解构写法:给变量取别名
    C++新型强制类型转换。
    C++ new、delete、namespace关键字。
    C++ 调用C语言、extern "C"、__cplusplus关键字
    C++ 重载函数
    liunx 环境下安装 Eclipse C++
    C++ 内联函数 inline关键字
  • 原文地址:https://www.cnblogs.com/Mint/p/432480.html
Copyright © 2011-2022 走看看