分类

  • 软件天地

  • 深入浅出之windows2000启动关机脚本‖
      Win2000计算机启动/关
    脚本是邀请用户登录之前运
    autoexec.bat;关机脚本是
    机脚本(startup/shutdown scri
    行的批文件,它的功能类似于Win
    计算机关机之前运行的批文件.
    pts)是Win2000的一个新特点.启动
    9X和DOS中的自动执行批处理文件


      与Win2000用户登录/注
    机启动/关机脚本在计算机
    毕后才出现邀请用户登录的
    登录系统或从系统注销时运
    脚本程序就运行一次.
    销脚本(logon/logoff scripts)
    启动和鼗痹诵?脚本程序只
    对话框;用户登录/注销脚本在邀
    行,运行次数由用户登录/注销的

    相比,它们之间的主要区别是:计算
    运行一次,通常在启动脚本运行完
    请用户登录的对话框出现后,用户
    次数决定,每登录/注销系统一次,


      二.指派

      在启用计算机启动/关
    略MMC(管理控制台)管理
    机脚本前,必须进行指派.指派计
    单元进行,具体的操作如下:
    算机启动/关机脚本需要通过组策


      1.单击"开始"菜单->"运行",在打开框内输入"MMC",打开微软管理控制台(Microsoft Management Console,MMC).


      2.单击"控制台"菜单->"添加/删除管理单元...",在跳出"添加/删除管理单元"对话框内单击"添加"按钮,添加独立管理单元.


      3.在"添加独立管理单元"对话框的"
    "添加"按钮.
    可用的独立管理单元"列表内选择"组策略",按下面的


      4.当系统询问使用哪一个组策略对象
    行的启动/关机脚本,请选择缺省的"本地
    域内所有计算机上执行的启动/关机脚本,
    钮,在"浏览组策略"对话框选定能应用到
    Policy"对象为例,它是Win2000域缺省的
    时,如果你要指派面向本地计算机,只在本地计算机执
    计算机"组策略对象;如果你要指派面向Win2000域,在
    那请点击"选择组策略对象"对话框中的"浏览..."按
    整个域中的组策略对象,这里以"Default Domain
    域策略对象(图一)(t1.gif).

      5.完成后依次关闭各对
    对象树(图二)(t2.gif).
    话框回到管理控制台,现在管理

    控制台上就有了一个相应的组策略


      6.在管理控制台左侧的控制台树窗格中,依次展开组策略对象->"计算机配置"->"Windows设置"->"脚本(启动/关闭)"节点,双击右侧详细资料窗格中的"启动"或"关机"项目就可以设置计算机启动或关机时使用的脚本了(图三)(t3.gif)(因Win2000计算机启动和关机脚本的设置方法相同,下面的操作均以启动脚本为例).


      7.双击右侧详细资料窗格中的"启动"
    添加新的计算机启动脚本.
    项目,在跳出的"启动属性"对话框中点击"添加"按钮,


      8.一个启动脚本条目包
    不包含文件路径,比如图中
    路径下寻找这个脚本文件.
    本使用了运行参数"start".
    括两方面的内容:脚本名和脚本
    的脚本文件名只是"scripta.vbs
    脚本的参数是可选的,可填可不

    参数(图四)(t4.gif).如果脚本名
    ",系统会到缺省的计算机启动脚本
    填,看实际情况而定,图中的开机脚


      9.本地计算机脚本的缺
    cyMachineScripts",如"C
    算机脚本的缺省路径通常是
    MyDC1sysvolMydom.com
    F9}MachineScripts".启
    "ShutDown"子文件夹中.
    省路径通常是"%systemroot%sy
    :winntsystem32GroupPolicy
    ""\sysvol\Policies\Machi
    Policies{31B2F340-016D-11D2
    动脚本文件存放在"Startup"子

    stem32GroupPoli
    MachineScripts".应用到域的计
    neScripts",如"
    -832F-00C04FB873
    文件夹中,关机脚本文件存放在


      10.我们可以根据需要
    动脚本(图五)(t5.gif).
    重复点击"启动属性"对话框中的

    "添加"按扭,为计算机添加多个启


      11.设置完毕,保存后退出组策略MMC
    动和关机时起作用.
    管理单元.等组策略刷新后,这些脚本就会在计算机启


      三.深入

      1.我们对计算机启动/关机脚本的设
    藏配置文件中,这个文件位于"C:WINNTs
    以使用任一款文件编辑软件如记事本进行
    置数据被Win2000保存在了一个名为scripts.ini的隐
    ystem32GroupPolicyMachineScripts"目录下,可
    编辑.

      scripts.ini文件内容
    是启动脚本配置,[Shutdown
    两部分存贮,脚本名保存在X
    从0开始的脚本序号,以区别
    scripts.ini文件的例子:
    通常包含两个数据段:[Startup]
    ]数据段下是关机脚本配置.每个
    CmdLine关键字下,参数保存在XP
    多个脚本条目和标志各脚本条目

    和[Shutdown],[Startup]数据段下
    脚本条目被分成脚本名和脚本参数
    arameters关键字下,这里的X表示
    的运行顺序.下面是一个简单的


      [Startup]                                                           
      0CmdLine=d:startss.bat                             
      0Parameters=                                                     
      1CmdLine=scriptsa.vbs                                   
      1Parameters=start                                           
      [Shutdown]                                                         
      0CmdLine=shut.vbs                                           
      0Parameters=                                                     

      从例子中我们可以看出
    d:start目录下,没有使用
    INNTsystem32GroupPolic
    行顺序是先执行ss.bat后执
    脚本位于缺省的关机脚本目
    .
    ,共设置了两个计算机启动脚本:
    参数;scriptsa.vbs位于缺省的
    yMachineScriptsStartup下,
    行scriptsa.vbs.设置了一个关
    录C:WINNTsystem32GroupPol

    ss.bat和scripta.vbs.ss.bat位于
    启动脚本目录C:W
    使用了参数"start".两个脚本的执
    机脚本shut.vbs,没有使用参数,该
    icyMachineScriptsShutdown下


      2.启动/关机脚本的运行情况,包含是
    都可以在组策略中进行微调.具体操作如
    否同步运行、是否显示运行状态、最长等待时间等,
    下:

      (1)-(5)步同第二部分指派操作中的1-5步;                             

      (6)在管理控制台左侧的控制台树窗格中,依次展开组策略对象->"计算机配置"->"管理模板"->"登录"节点,右侧详细内容窗格中显示的内容有四项与启动/关机脚本有关(图六)(t6.gif):非同步运行启动脚本,显示启动脚本的运行状态,显示关机脚本的运行状态,组策略脚本的最长等待时间.


      (7)非同步运行启动脚本                                                     
      在默认情况(也就是没
    一个启动脚本.如果启用这
    运行.如果停用或不配置这
    不配置.
    有配置的情况,下同)下,系统要
    个策略,系统则不会协调启动脚
    个策略,每个启动脚本要在上一

    等每个启动脚本运行完毕才运行下
    本的运行顺序,启动脚本可以同时
    个脚本运行完毕后才能运行.建议


      这个策略对应的注册表
    indowsCurrentVersionpo
    表示启用,1表示禁用.
    值是"HKEY_LOCAL_MACHINESOFT
    liciessystemRunStartupScri

    WAREMicrosoftW
    ptSync",这是一个REG_DWORD值,0


      (8)显示启动/关机脚本的运行状态                                           
      在默认情况下,系统不显示启动脚本
    时显示每个指令,指令将出现在命令窗口,
    设计的.如果停用或不配置这个策略,指
    中的指令.如果启用这个策略,系统会在启动脚本运行
    或显示出人机交互界面。这个功能主要是为高级用户
    令则不会显示.建议不配置.

      举个例子,假设你在启
    启用了这一策略允许显示启
    会跳出来,桌面被打开,系统
    入法漏洞!由此可以看出,打
    动脚本中有一条命令是"c:winn
    动脚本的运行状态,那么当计算
    以system用户的身份交互登录到
    开启动/关机脚本的运行状态有
    texplorer.exe c:winnt",如果
    机启动时,一个资源管理器窗口就
    计算机上,这无异于那个著名的输
    时是非常危险的.

      这两个组策略条目对应的注册表值?br>SOFTWAREMicrosoftWindowsCurrentVe
    "HKEY_LOCAL_MACHINESOFTWAREMicroso
    npoliciessystemHideShutdownScript
    别是"HKEY_LOCAL_MACHINE
    rsionpoliciessystemHideStartupScripts"和
    ftWindowsCurrentVersio
    s",均为REG_DWORD值,0表示启用,1表示禁用.

      (9)组策略脚本的最长等待时间                                               
      这个策略限制了由组策
    间已超过但脚本尚未完成运
    允许合并的脚本集运行600
    略完成运行登录、开始和关闭脚
    行,系统会停止脚本处理并记录
    秒(10分钟).
    本所需的全部时间.如果当指定时
    一个错误事件.在默认情况下,系统


      要使用这个策略,在第
    成的时间,单位是秒.要让系
    )(t7.gif).但不建议这样,
    二个框中键入从1到32000之间的
    统一直等到完成运行脚本为止,
    如果你的脚本写的很差,那后果
    数目以确定您希望系统等待脚本完
    无论等待时间多久,请键入0(图七
    将难以想象!

      如果其它系统任务必须等待脚本完成
    ,必须完成每一个启动脚本后才能运行下
    统等到完成启动脚本后再出现邀请用户登
    果间隔太短,所需的任务无法完成系统会
    才能进行,这个间隔时间就非常关键.在默认的情况下
    一个,您还可以使用"非同步运行启动脚本"策略让系
    录的对话框.间隔过长可延缓系统并使用户不方便,如
    可能会过早就绪,导致出现问题.

      这个组策略条目对应的
    softWindowsCurrentVers
    它的值表示等待的时间,单
    注册表值是"HKEY_LOCAL_MACHIN
    ionpoliciessystemMaxGPOSc
    位是秒.
    ESOFTWAREMicro
    riptWait",也是一个REG_DWORD值,


      四.应用

      计算机启动/关机脚本的用途很多,下面举三个比较典型的例子:                   

      1.计算机启动和关机时间审核                                                 

      (1)编写一个能够记录时间的脚本LogTime.vbs,内容如下:           

      '===============================
    =================
      dim ArgObj,str,strtmp                                   

      Set ArgObj = WScript.Arguments                 
      If ArgObj.Count < 1 Then                       
      strtmp="无参数操作!"                                               
      else                                                                     
      select case ArgObj.Item(0)                         
      case "startup"                                                 
      strtmp=" 服务器启动."                                             
      case "shutdown"                                               
      strtmp=" 服务器关闭."                                             
      case else                                                           
      strtmp=" 未知操作!参数:"+ArgObj.Item(0)           
      end select                                                         
      end if                                                                 

      set fso=CreateObject("Scripting.
    FileSystemObject")
      set tmp=fso.opentext
    file("d:loglogtime.txt",8,
    true)


      str="["+cstr(now())+
    "] "+strtmp+chr(13)+chr(10)
      tmp.write str                                                   
      tmp.close                                                           

      set tmp=nothing                                               
      set fso=nothing                                               
      '===============================
    ==================

      这个脚本有两个参数:startup和shut
    关机脚本时,使用"shutdown"参数.另外,
    请确保这个对象已经存在于你的计算机上
    down.当用作启动脚本时,使用"startup"参数;当用做
    脚本中使用了FileSystemObject对象,使用该脚本前
    .

      (2)按照前面的方法将
    机启动或关机的时间(实际
    文件中,例子中是"d:log
    脚本设置好.每次计算机启动或
    上这个脚本运行时的时间,但两
    logtime.txt",可以根据需要更
    关机,这个脚本都会运行,并扑?br>者应该相差无几)记录到一个文本
    改.

      2.删除一些特殊的共享                                                       

      在Win2000中,由于计算
    、D$、ADMIN$、IPC$、NETL
    理"MMC或net share命令等
    动后会重新出现.基于安全
    特殊共享的方法比较多,如
    方法.
    机管理、用户登录等方面的需要
    OGON等,但这些共享并不是所有
    禁止这些共享,只是一种治标不
    等方面的考虑,我们有时希望将
    编辑注册表,下面就再提供一种

    ,系统会建立许多特殊的共享,如C$
    的计算机都必须的.使用"计算机管
    治本的方法,它们在计算机重新启
    这些共享彻底删除.现在删除这类
    使用启动脚本删除这些特殊共享的


      (1)编写一个能删除特殊共享的批处理文件DelShare.bat,内容如下:

      net share C$ /delete                                     
      net share D$ /delete                                     
      net share IPC$ /delete                                 
      net share NETLOGON /delete                         

      (2)按照前面的方法将
    脚本设置为启动脚本,重新启动
    计算机.OK,一切都清净了.

      3.恢复管理员密码或新建管理员账号                                           

      丢失管理员密码是件非
    如何恢复管理员密码乃至新
    幕保护程序法、使用O&O软
    常令人头疼的事情,但说不定什
    建一个管理员账号,现在已经有
    件等.实际上,使用启动脚本也是
    么时候就会碰到.在紧急情况下,
    许多成熟的技术,如经典的登录屏
    一个相当不错的选择.

      (1)如果故障计算机使
    NTFS文件系统,可将故障计
    面的操作以后一种情况为准
    分区E:.
    用FAT/FAT32文件系统,那可直接
    算机上的硬盘取下,以从盘模式
    ,假设现在故障计算机的system

    使用Win98引导盘引导.如果使用
    挂接到其它的Win2000计算机上.下
    分区(通常是C在新的计算机上成为


      (2)编写一个能恢复管理员密码的批
    即可.如下:
    处理文件admin.bat,内容只需要一条"net user"命令


      net user administrator 12345678               

      这儿我们假设当前的管
    admin.bat保存到"E:winnt
    障计算机原来的"C:winnt
    理员是administrator,将它的密
    system32GroupPolicyMachin
    system32GroupPolicyMachine
    码恢复为"12345678".将文件
    eScriptsStartup"下,也就是故
    ScriptsStartup"下.

      (3)编写一个启动/关机
    下:
    脚本配置文件scripts.ini,这个

    文件名是固定的,不能改变.内容如


      [Startup]                                                           
      0CmdLine=admin.bat                                         
      0Parameters=                                                     

      将文件scripts.ini保存到"E:winnt
    是故障计算机原来的"C:winntsystem32
    system32GroupPolicyMachineScripts"下,也就
    GroupPolicyMachineScripts"下.

      (4)将硬盘恢复为主盘,
    束管理员administrator的
    接回原来的计算机,重新启动,等
    密码就被恢复为"12345678".
    待启动脚本运行.启动脚本运行结


      (5)如果要新建一个管理员账号,admin.bat文件的内容可以修改为:     

      net user admin 12345678 /add                     
      net localgroup administrators ad
    min /add

      这样一个名为"admin",密码是"12345678"的管理员账号就建立了.

      这个方法不仅可以恢复
    的密码.
    独立服务器上本地管理员密码,

    也可以恢复Win2000域中域管理员


    上一页 下一页




    map