批处理修改组策略添加开/关机脚本
对于Windows XP Professional版本,我们可以通过组策略添加开/关机脚本,从而达到开机或关机时运行指定的程序或指令。XP Home Edition没有组策略功能,因此不能够实现。手动修改组策略以添加开/关机脚本的方法,网上有介绍,这里就不多说了。本文介绍一下,如何通过批处理修改组策略,从而添加开/关机脚本。
原理介绍
组策略的开/关机设置后,会在%windir%\system32\GroupPolicy\Machine\Scripts文件夹下创建一个配置文件,名称为scripts.ini。%windir%指系统目录,一般是C:\Windows。GroupPloicy文件夹是一个隐藏文件夹,scripts.ini是一个隐藏文件,因此需要显示隐藏文件才能够看到。
scripts.ini是一个配置文件,其内部结构如下:
0CmdLine=xxxxx
0Parameters=xxxxx
0CmdLine=xxxxx
0Parameters=xxxx
段就是开机前执行的脚本配置段,每一个脚本包括两部分:脚本路径(CmdLine)和参数(Parameters)。由于开机脚本可能不止一个,因此CmdLine和Parameters前面都带有一个数字编号,第一个脚本编号为0,第二个脚本为1,依次类推。
段是关机前执行的脚本配置段,其配置结构跟段的完全一样。
段和段在Scripts.ini中的书写是不分先后的。
修改组策略的开关机脚本就是修改这个Scripts.ini配置文件,同样,通过修改Scripts.ini也可以达到修改组策略的目的。不过,修改完Scripts.ini后要执行命令 gpupdate /force 才能够使得修改生效。
另外需要说明的一点是,虽然组策略在注册表中也是一一对应的,但是个人感觉组策略的级别要高于注册表,即组策略可以引起注册表变化,但修改注册表却不能引起组策略的改变。
批处理添加组策略开关机脚本
根据前面对组策略开关机脚本设置原理的介绍,想必大家就知道该如何用批处理来修改组策略了吧?对了,就是用批处理修改Scripts.ini文件!
由于开机执行文件也可以通过添加启动项和计划任务来实现,本文就只写出一个添加关机脚本的批处理:
@echo off
if "%1"=="exec" goto :exec
set di=%windir%\system32\GroupPolicy\Machine\Scripts
>%di%\scripts.ini echo
>>%di%\scripts.ini echo 0CmdLine=%0
>>%di%\scripts.ini echo 0Parameters=exec
gpupdate /force
pause
exit
:exec
echo 关机时间为:%time%>>d:\a.txt
其中,exec之前的部分为添加脚本的头处理段,exec之后就是你要添加的关机脚本了。比如本批处理,双击后即可把自身添加为关机脚本,点击“关机”按钮后,即可执行exec后面的命令,即向D:\a.txt中写入关机时间。
需要注意的是,关机脚本一定要能够自己结束。如果关机脚本以pause结束,则会使得计算机一直停留在“正在执行关机脚本”处,并且由于得不到用户交互而不得不硬关机损伤硬盘
页:
[1]