`
wcvq08wcvq
  • 浏览: 14706 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

深入浅出Win2000 (xp)计算机启动/关机脚本

 
阅读更多

深入浅出Win2000 (xp)计算机启动/关机脚本
2010年07月28日
  一.简介
  Win2000计算机启动/关机脚本(startup/shutdown scripts)是Win2000的
  一个新特点.启动脚本是邀请用户登录之前运行的批文件,它的功能类似于
  Win9X和DOS中的自动执行批处理文件autoexec.bat;关机脚本是计算机关
  机之前运行的批文件.
  与Win2000用户登录/注销脚本(logon/logoff scripts)相比,它们之间的
  主要区别是:计算机启动/关机脚本在计算机启动和关机时运行,脚本程序
  只运行一次,通常在启动脚本运行完毕后才出现邀请用户登录的对话框;
  用户登录/注销脚本在邀请用户登录的对话框出现后,用户登录系统或从
  系统注销时运行,运行次数由用户登录/注销的次数决定,每登录/注销系
  统一次,脚本程序就运行一次.
  二.指派
  在启用计算机启动/关机脚本前,必须进行指派.指派计算机启动/关机脚
  本需要通过组策略MMC(管理控制台)管理单元进行,具体的操作如下:
  1.单击"开始"菜单->"运行",在打开框内输入"MMC",打开微软管理控制台
  (Microsoft Management Console,MMC).
  2.单击"控制台"菜单->"添加/删除管理单元...",在跳出"添加/删除管理
  单元"对话框内单击"添加"按钮,添加独立管理单元.
  3.在"添加独立管理单元"对话框的"可用的独立管理单元"列表内选择
  "组策略",按下面的"添加"按钮.
  4.当系统询问使用哪一个组策略对象时,如果你要指派面向本地计算机,
  只在本地计算机执行的启动/关机脚本,请选择缺省的"本地计算机"组策
  略对象;如果你要指派面向Win2000域,在域内所有计算机上执行的启动/
  关机脚本,那请点击"选择组策略对象"对话框中的"浏览..."按钮,在"浏
  览组策略"对话框选定能应用到整个域中的组策略对象,这里以"Default
  Domain Policy"对象为例,它是Win2000域缺省的域策略对象.
  5.完成后依次关闭各对话框回到管理控制台,现在管理控制台上就有了
  一个相应的组策略对象树.
  6.在管理控制台左侧的控制台树窗格中,依次展开组策略对象->"计算机配置
  "->"Windows设置"->"脚本(启动/关闭)"节点,双击右侧详细资料窗格中的"
  启动"或"关机"项目就可以设置计算机启动或关机时使用的脚本了
  (因Win2000计算机启动和关机脚本的设置方法相同,下面的操作均以启动脚本为例).
  7.双击右侧详细资料窗格中的"启动"项目,在跳出的"启动属性"对话框中点击
  "添加"按钮,添加新的计算机启动脚本.
  8.一个启动脚本条目包括两方面的内容:脚本名和脚本参数.如果脚本名不包
  含文件路径,比如图中的脚本文件名只是"scripta.vbs",系统会到缺省的计算
  机启动脚本路径下寻找这个脚本文件.脚本的参数是可选的,可填可不填,看实
  际情况而定,图中的开机脚本使用了运行参数"start".
  9.本地计算机脚本的缺省路径通常是"%systemroot%\system32\GroupPolicy
  \Machine\Scripts",如"C:\winnt\system32\GroupPolicy\Machine\Scripts"
  .应用到域的计算机脚本的缺省路径通常是""\\\sysvol\\Policies\\Machine\Scripts",如"\\MyDC1\sysvol\Mydom.com
  \Policies\{31B2F340-016D-11D2-832F-00C04FB873F9}\Machine\Scripts"
  .启动脚本文件存放在"Startup"子文件夹中,关机脚本文件存放在"ShutDown
  "子文件夹中.
  10.我们可以根据需要重复点击"启动属性"对话框中的"添加"按扭,为计算机
  添加多个启动脚本(图五)(t5.gif).
  11.设置完毕,保存后退出组策略MMC管理单元.等组策略刷新后,这些脚本就会
  在计算机启动和关机时起作用.
  三.深入
  1.我们对计算机启动/关机脚本的设置数据被Win2000保存在了一个名为
  scripts.ini的隐藏配置文件中,这个文件位于"C:\WINNT\system32\
  GroupPolicy\Machine\Scripts"目录下,可以使用任一款文件编辑软件
  如记事本进行编辑.
  scripts.ini文件内容通常包含两个数据段:[Startup]和[Shutdown],
  [Startup]数据段下是启动脚本配置,[Shutdown]数据段下是关机脚本配置
  .每个脚本条目被分成脚本名和脚本参数两部分存贮,脚本名保存在XCmdLine
  关键字下,参数保存在XParameters关键字下,这里的X表示从0开始的脚本序号
  ,以区别多个脚本条目和标志各脚本条目的运行顺序.下面是一个简单的
  scripts.ini文件的例子:
  [Startup]
  0CmdLine=d:\start\ss.bat
  0Parameters=
  1CmdLine=scriptsa.vbs
  1Parameters=start
  [Shutdown]
  0CmdLine=shut.vbs
  0Parameters=
  从例子中我们可以看出,共设置了两个计算机启动脚本:ss.bat和scripta.
  vbs.ss.bat位于d:\start目录下,没有使用参数;scriptsa.vbs位于缺省的
  启动脚本目录C:\WINNT\system32\GroupPolicy\Machine\Scripts\Startup
  下,使用了参数"start".两个脚本的执行顺序是先执行ss.bat后执行scriptsa.vbs.设置了一个关机脚本shut.vbs,没有使用参数,该脚本位于缺省的关机脚本目录C:\WINNT\system32\GroupPolicy\Machine\Scripts\Shutdown下.
  2.启动/关机脚本的运行情况,包含是否同步运行、是否显示运行状态、
  最长等待时间等,都可以在组策略中进行微调.具体操作如下:
  (1)-(5)步同第二部分指派操作中的1-5步;
  (6)在管理控制台左侧的控制台树窗格中,依次展开组策略对象->"计算机配置"
  ->"管理模板"->"登录"节点,右侧详细内容窗格中显示的内容有四项与启动/
  关机脚本有关(图六)(t6.gif):非同步运行启动脚本,显示启动脚本的运行状
  态,显示关机脚本的运行状态,组策略脚本的最长等待时间.
  (7)非同步运行启动脚本
  在默认情况(也就是没有配置的情况,下同)下,系统要等每个启动脚本运行完
  毕才运行下一个启动脚本.如果启用这个策略,系统则不会协调启动脚本的运行
  顺序,启动脚本可以同时运行.如果停用或不配置这个策略,每个启动脚本要在上一个脚本运行完毕后才能运行.建议不配置.
  这个策略对应的注册表值是"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
  Windows\CurrentVersion\policies\system\RunStartupScriptSync",
  这是一个REG_DWORD值,0表示启用,1表示禁用.
  (8)显示启动/关机脚本的运行状态
  在默认情况下,系统不显示启动脚本中的指令.如果启用这个策略,系统会
  在启动脚本运行时显示每个指令,指令将出现在命令窗口,或显示出人机交
  互界面。这个功能主要是为高级用户设计的.如果停用或不配置这个策略,指令则不会显示.建议不配置.
  举个例子,假设你在启动脚本中有一条命令是"c:\winnt\explorer.exe
  c:\winnt",如果启用了这一策略允许显示启动脚本的运行状态,那么当计
  算机启动时,一个资源管理器窗口就会跳出来,桌面被打开,系统以system
  用户的身份交互登录到计算机上,这无异于那个著名的输入法漏洞!由此
  可以看出,打开启动/关机脚本的运行状态有时是非常危险的.
  这两个组策略条目对应的注册表值分别是"HKEY_LOCAL_MACHINE\SOFTWARE
  \Microsoft\Windows\CurrentVersion\policies\system\HideStartupScripts"
  和"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\HideShutdownScripts",均为REG_DWORD值,0表示启用,1表示禁用.
  (9)组策略脚本的最长等待时间
  这个策略限制了由组策略完成运行登录、开始和关闭脚本所需的全部时间.
  如果当指定时间已超过但脚本尚未完成运行,系统会停止脚本处理并记录一
  个错误事件.在默认情况下,系统允许合并的脚本集运行600秒(10分钟).
  要使用这个策略,在第二个框中键入从1到32000之间的数目以确定您希望系
  统等待脚本完成的时间,单位是秒.要让系统一直等到完成运行脚本为止,
  无论等待时间多久,请键入0(图七)(t7.gif).但不建议这样,如果你的脚
  本写的很差,那后果将难以想象!
  如果其它系统任务必须等待脚本完成才能进行,这个间隔时间就非常关键.
  在默认的情况下,必须完成每一个启动脚本后才能运行下一个,您还可以使
  用"非同步运行启动脚本"策略让系统等到完成启动脚本后再出现邀请用户
  登录的对话框.间隔过长可延缓系统并使用户不方便,如果间隔太短,所需的
  任务无法完成系统会可能会过早就绪,导致出现问题.
  这个组策略条目对应的注册表值是"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
  \Windows\CurrentVersion\policies\system\MaxGPOScriptWait",也是一个
  REG_DWORD值,它的值表示等待的时间,单位是秒.
  四.应用
  计算机启动/关机脚本的用途很多,下面举三个比较典型的例子:
  1.计算机启动和关机时间审核
  (1)编写一个能够记录时间的脚本LogTime.vbs,内容如下:
  '================================================
  dim ArgObj,str,strtmp
  Set ArgObj = WScript.Arguments
  If ArgObj.Count 脚本有两个参数:startup和shutdown.当用作启动脚本时,使用"startup"
  参数;当用做关机脚本时,使用"shutdown"参数.另外,脚本中使用了
  FileSystemObject对象,使用该脚本前请确保这个对象已经存在于你的计算机上.
  (2)按照前面的方法将脚本设置好.每次计算机启动或关机,这个脚本都会运行,
  并将计算机启动或关机的时间(实际上这个脚本运行时的时间,但两者应该相差无几)
  记录到一个文本文件中,例子中是"d:\log\logtime.txt",可以根据需要更改.
  2.删除一些特殊的共享
  在Win2000中,由于计算机管理、用户登录等方面的需要,系统会建立许多特殊的共享
  ,如C$、D$、ADMIN$、IPC$、NETLOGON等,但这些共享并不是所有的计算机都必须的.
  使用"计算机管理"MMC或net share命令等禁止这些共享,只是一种治标不治本的方法,
  它们在计算机重新启动后会重新出现.基于安全等方面的考虑,我们有时希望将这些
  共享彻底删除.现在删除这类特殊共享的方法比较多,如编辑注册表,下面就再提供一
  种使用启动脚本删除这些特殊共享的方法.
  (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)如果故障计算机使用FAT/FAT32文件系统,那可直接使用Win98引导盘引导.
  如果使用NTFS文件系统,可将故障计算机上的硬盘取下,以从盘模式挂接到其
  它的Win2000计算机上.下面的操作以后一种情况为准,假设现在故障计算机的
  system分区(通常是C在新的计算机上成为分区E:.
  (2)编写一个能恢复管理员密码的批处理文件admin.bat,内容只需要一条"net
  user"命令即可.如下:
  net user administrator 12345678
  这儿我们假设当前的管理员是administrator,将它的密码恢复为"12345678".
  将文件admin.bat保存到"E:\winnt\system32\GroupPolicy\Machine\Scripts\
  Startup"下,也就是故障计算机原来的"C:\winnt\system32\GroupPolicy\
  Machine\Scripts\Startup"下.
  (3)编写一个启动/关机脚本配置文件scripts.ini,这个文件名是固定的,
  不能改变.内容如下:
  [Startup]
  0CmdLine=admin.bat
  0Parameters=
  将文件scripts.ini保存到"E:\winnt\system32\GroupPolicy\Machine\
  Scripts"下,也就是故障计算机原来的"C:\winnt\system32\GroupPolicy\
  Machine\Scripts"下.
  (4)将硬盘恢复为主盘,接回原来的计算机,重新启动,等待启动脚本运行.
  启动脚本运行结束管理员administrator的密码就被恢复为"12345678".
  (5)如果要新建一个管理员账号,admin.bat文件的内容可以修改为:
  net user admin 12345678 /add
  net localgroup administrators admin /add
  这样一个名为"admin",密码是"12345678"的管理员账号就建立了
  Win2000/XP 启动脚本的功能类似于Windows9x 和DOS中的自动批处理文件Autoexec.bat,是用来指定计算机启动时运行的脚本;而关机脚本是计算机关机之前运行的脚本。启动/关机脚本的用途很多, 这里就举两个例子供参考。
  启动时自动清除IE 历史记录
  上网冲浪后,系统中总会遗留很多的文件需要我们清理,其中包括IE临时文件、历史记录以及Cookies等等。如果每次都使用手工方法清除比较麻烦,其实只 要利用Win2000/XP 的开关机脚本就可以实现自动清除。首先在“C:\Windows(WinNT)\System32\GroupPolicy\Machine\Scripts\Startup”目录或者其它指定的目录下建立批处理文件Clear.bat ,内容可根据需要编写。例如自动清除IE 历史记录,添加的命令为“DEL/Q/F/S "C:\Documents and Settings\(用户名)\Local Settings\History\History.IE5"”。批处理文件编写完成后,还需要进行指派,具体的操作方法如下:
  1.单击“开始/ 运行”, 在运行命令框中输入“gpedit.msc”,回车执行,打开“组策略”窗口。
  2.在组策略左侧的控制台树窗格中,依次展开“计算机配置/Windows 设置/ 脚本(启动/关机)”节点,双击右侧详细资料窗格中的“启动”项目。
  3 . 在弹出的“启动属性”对话框中点击“添加”按钮,添加新的计算机启动脚本。一个启动脚本条目包括两方面的内容:脚本名和脚本参数。单击脚本名右侧的“浏览”按钮,找到先前建立的Clear.bat 文件并打开,脚本的参数是可选的,这里不填。
  4 . 单击“确定”按钮回到“启动属性”对话框,再单击“应用”按钮后退出组策略窗口。这样,计算机开机时就会自动清除I E 的历史记录。
  关机时自动备份重要文件
  电脑中有一些重要的资料需要经常备份,如重要的文档、IE 收藏夹等等,如果利用Windows2000/XP 开关机脚本让系统自动进行备份的话,就可以避免因忘记备份而导致资料丢失的麻烦。下面以IE 收藏夹为例,介绍如何利用关机脚本实现自动备份。
  首先在指定的位置创建备份文件夹,如D:\Favorites ,然后在“C:\Windows (WinNT)\System32\Grouppolicy\Machine\Scripts\Shutdown”目录下, 编写一个能够自动备份的批处理文件DataBak.bat,内容如下:
  XCOPY/E/Y "C:\Documents and Settings\Administrator\Favorites" D:\Favorites
  打开组策略窗口,在左侧的控制台树窗格中,依次展开“计算机配置/Windows 设置/ 脚本(启动/ 关机)”节点,双击右侧详细资料窗格中的“关机”项目,在弹出的“关机属性”对话框中点击“添加”按钮,将DataBak.bat 添加为新的计算机关机脚本。设置完成后,退出组策略窗口,重新启动计算机即可。
  --------------------------------------------------------------------
  Windows XP启动脚本
  Windows XP启动脚本(startup scripts)是计算机在登录屏幕出现之前运行的批处理文件,它的功能类似于Windows 9×和DOS中的自动执行批处理文件autoexec.bat。利用这个特性,可以编写一个批处理文件重新设置用户密码,并将它加入启动脚本中,这样就达到了目的。以下是具体步骤(假设系统目录为C:\Windows)。
  1.使用Windows98启动盘启动电脑。编写一个能恢复密码的批处理文件a.bat,内容只需要一条“net user”命令即可:“Net user rwd 12345678”。这条命令的意思是将用户rwd的密码设置为“12345678”(有关Net命令的用法,可参考Windows帮助)。然后将文件a.bat保存到“C:\windows\system32\GroupPolicy\Machine\Scripts\Startup”下。
  2.编写一个启动/关机脚本配置文件scripts.ini,这个文件名是固定的,不能改变。内容如下:
  [Startup]
  0CmdLine=a.bat
  0Parameters=
  3.将文件scripts.ini保存到“C:\winnt\system32\GroupPolicy\Machine\Scripts”下。scripts.ini保存着计算机启动/关机脚本的设置数据,文件内容通常包含两个数据段:[Startup]和[Shutdown]。[Startup]数据段下是启动脚本配置,[Shutdown]数据段下是关机脚本配置。每个脚本条目被分成脚本名和脚本参数两部分存储,脚本名保存在XCmdLine关键字下,参数保存在XParameters关键字下,这里的X表示从0开始的脚本序号,以区别多个脚本条目和标志各脚本条目的运行顺序。
  4.取出Windows 98启动盘,重新启动电脑,等待启动脚本运行。启动脚本运行结束后用户rwd的密码就被恢复为“12345678”。
  5.登录成功后删除上述步骤建立的两个文件。
  说明:我的电脑使用的是FAT32文件系统,如果使用NTFS文件系统,可以将这块硬盘以从盘模式挂接到其它能识别NTFS文件系统(如Windows 2000或Windows XP)的计算机上进行上述操作。
  本方法可以恢复管理员(Administrator)的密码。对Windows2000系统中本地计算机用户和域用户的密码恢复同样有效。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics