分类
深入浅出之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域中域管理员 |