Windows 2000 Server 自动重启脚本

Windows 2000 Server 自动重启脚本

我在异地运行的过时的服务器操作系统(Win2k Web Server)上运行旧式网络应用程序。该应用程序是一款商业产品(即我没有源代码),已被开发人员停产,但我的公司仍然依赖它,因为市场上没有比这种极其小众的产品更好的产品。问题是它每隔几天就会崩溃一次,而且总是在最糟糕的时间(周末、凌晨 3 点等),我必须通过 RDC 登录服务器并重新启动服务器,然后在服务器恢复后手动重新启动应用程序。服务器除了托管此应用程序外什么也不做。我在 win2k3 上试过了,它仍然崩溃,所以更换操作系统无济于事。

我正在尝试让此服务器自动重启,然后在发现应用程序已死时重新启动应用程序。我有一种方法可以检测此应用程序何时死机,并且能够在那时运行任何类型的脚本/exe。该应用程序无法作为服务运行(我竭尽全力让它工作,但没有机会)。它必须在 RDC 用户的桌面上运行,而且没有办法解决这个问题,因为我需要经常在桌面上与它交互。所以:

1:识别应用程序何时死亡(完成)2:完成后自动重新启动服务器(简单,完成)3:当服务器完成重新启动时,在管理员级别用户的 RDC 桌面上打开此应用程序。

我的正式问题是:我该如何做#3?

任何建议都将受到热烈欢迎和赞赏。

答案1

我要说的是其他人说过的话,但略有不同,因为我已经用几个糟糕透顶的程序做过同样的事情(它们都是时间钟的轮询程序——为什么轮询时间钟的程序都是垃圾?):

  • 以运行应用程序的用户身份登录到服务器计算机。将用户的屏幕保护程序设置为安全(即需要密码)。您可能应该使用“空白屏幕”来节省 CPU。

  • 将启动应用程序的脚本快捷方式放入“所有用户”的“启动”组中,并测试其“活动状态”。(在检查应用程序是否“停止运行”之前,请确保脚本为应用程序提供了足够的时间真正启动。)

  • 从以下位置获取“nircmd”的副本http://www.nirsoft.net/utils/nircmd2.html并将其放入 %SystemRoot%\System32 目录(或任何地方)。向“所有用户”的“启动”组添加一个快捷方式来调用:

    %SystemRoot%\system32\nircmd.exe 屏幕保护程序

  • 添加以下注册表值,替换适当的用户名和密码。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    AutoAdminLogon-REG_SZ-1
    DefaultUsername - REG_SZ - 设置为登录用户名
    DefaultPassword - REG_SZ - 设置为登录密码
    DefaultDomain - REG_SZ - 如果使用本地帐户登录,则设置为本地计算机的名称;如果使用域帐户登录,则设置为域名。
    强制自动登录-REG_SZ-1
  • 修改 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon 项的权限(使用 REGEDT32),从该项的 ACL 中删除“Power Users”和“Users”组。(我刚刚在 W2K 计算机上测试了这一点,它不会破坏自动登录)。这将防止机器上访问权限有限的用户读取纯文本密码。

此时,计算机将启动并自动以您指定的用户身份登录,启动应用程序和“deadness”脚本,并立即进入锁定的屏幕保护程序。启动时按住的键不会停止自动登录(但由于这是在异地,希望键盘/鼠标无论如何都是安全的)。

如果您可以在 W2K3 上运行它,则可以使用远程桌面客户端上的“/admin”或“/console”参数(取决于您拥有的版本 - 输入“/?”即可查看)连接到控制台会话。您需要使用与自动登录帐户相同的用户名和密码登录,没有该用户名和密码的任何人都无法连接到控制台会话。

如果您必须坚持在 W2K 上运行它,请安装类似 VNC 的程序,以便您可以远程控制控制台会话。如果您确实使用 VNC,请务必修改存储计算机 VNC 配置的注册表项上的权限(旧版本为 HKEY_LOCAL_MACHINE\Software\ORL\Winvnc,新版本为其他地方),以从密钥的 ACL 中删除“用户”和“高级用户”。这将阻止有限访问用户读取 VNC 密码哈希,而这很容易被逆转回 VNC 密码。

我就是这么做的。

答案2

这里的关键是安全——简而言之,如果您遵循这些说明,您将不会遇到任何安全问题。

步骤如下:1. 自动登录。2. 运行 (cmd) 批处理文件,该文件会在您登录时启动您的程序。

对于自动登录 - 只需使用 TweakUI - 它只是一堆注册表文件,但 TweakUI 是编写这些文件的最佳方式。

对于批处理文件,只需编写一个运行程序的 cmd 文件并将其放在“所有用户”目录中的“启动”文件夹中。

会有更复杂的方法来实现这一点,但这种低技术机制虽然有效,但会 100% 危及服务器的安全!

麦克风

答案3

我们必须在几个网站上执行此操作,并使用 Mike 建议的自动登录。

由于您有 Linux 背景,因此可能值得强调的是,自动登录会在服务器启动时自动为交互式会话提供用户名和密码,即,就好像有人坐在服务器前,按下 ctrl-alt-delete 并登录服务器一样。然后,应用程序将从启动文件夹运行,就像任何交互式用户一样。

NB:不涉及 RDC。这是一种交互式登录。

显然,安全性现在已不复存在,因为任何人都可以走到服务器前开始输入。但是,您可以将屏幕保护程序设置为非常短的超时时间,以便快速锁定交互式会话。唯一的安全风险是如果有人在监视服务器重新启动,并可以在自动登录和屏幕保护程序切入之间的时间内抓住它。

JR

答案4

在这种情况下,RDP 的一个流行替代方案是 VNC,它允许您连接到控制台会话,无论是否登录。

我相信 VNC 可以适度安全,这取决于您使用哪个版本,它是 FLOSS。

  • 使用 TweakUI 创建自动登录本地帐户不是域帐户。
  • 将应用程序的快捷方式添加到自动登录帐户的开始菜单中的启动组。

你可以试试TightVNC超VNCRealVNC温控器...

相关内容