如何添加关机脚本(不使用 gpedit.msc 或活动目录)?

如何添加关机脚本(不使用 gpedit.msc 或活动目录)?

我创建了一个脚本,希望将其作为关机脚本部署到我的 XP 工作站上。我知道我可以使用 UI (gpedit.msc) 将我的脚本添加为关机脚本,但我想自动部署我的脚本。我的工作站不属于 Windows 域。我将使用 OCS Inventory 进行部署。

我尝试向 Windows 注册表添加条目,但不起作用。运行 gpedit.msc 时看不到我添加的内容。如果我使用 gpedit.msc 添加某些内容,这似乎会覆盖我手动添加到注册表中的内容。

答案1

对于那些努力实现这一目标的人,我深表同情。我花了很多时间试图弄清楚 gpedit 所做的数百项更改中究竟哪些是真正重要的。我的测试是在 Windows Server 2016 上进行的。这些结果是相关的:

  1. 以下值:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
    
  2. 目录:

    \Windows\system32\GroupPolicy\Machine\Scripts\Startup
    \Windows\system32\GroupPolicy\Machine\Scripts\Shutdown
    

Windows 使用这些目录作为脚本的工作目录。即使您不将启动/关闭脚本保存在那里,这些目录也需要存在。

gpedit 的其他操作似乎都不重要。这包括许多注册表项和其他答案中引用的 .ini 文件。上面的一些键可能也是多余的,但我没有耐心进行测试。

答案2

我让它工作了。

我在一台计算机上使用 gpedit.msc 添加了脚本。我从HKLM\Software\Policies\Microsoft\Windows\System\Scripts和导出了注册表项HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine。我还压缩了C:\WINDOWS\SYSTEM32\GroupPolicy目录。

在另一台电脑上,我用之前在第一台电脑上导出的 2 个 .reg 文件修补了注册表。我还将 zip 文件解压到第二台电脑上的相同位置。

脚本在关机时运行,我在 gpedit.msc 中看到它。一切似乎都很好!

答案3

我们假设启动脚本位于 C:\MyStartupScript.bat

您需要一个名为 REG_SZ 的注册表项脚本其值设置为启动脚本位于以下两个位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0\0

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Startup\0\0

您还需要在 C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Scripts.ini 中添加以下条目

[Startup]
0CmdLine=C:\MyStartupScript.bat
0Parameters=

对于关机脚本,请按照相同的说明进行操作,但替换单词的每个实例启动用这个词关闭

编辑:

如果其他两个注册表项尚不存在,则似乎您可能还需要创建它们。

您需要在上述两个注册表位置创建它们。

第一个条目是 REG_SZ 条目,名为参数并且其值可以为空。

第二个条目是 REG_QWORD 条目,名为执行时间并将其值设置为00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

在 Windows XP 中,REG 命令无法将 REG_QWORD 条目添加到注册表。

为了解决这个限制,我例如使用一个批处理文件来添加这些行

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0\0]
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

到名为添加Qword文件然后使用以下命令执行该文件:

regedit /s addQword.reg

答案4

您可以在此处添加键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown

请在此处查看更多信息:http://en.kioskea.net/faq/3358-execute-a-script-a-startup-and-shutdown

您只需制作一个可在所有机器上运行的 reg 文件即可将密钥添加到注册表中。

相关内容