我在一个运行在异地的过时的服务器操作系统(Win2k Web Server)上运行一个传统的networking应用程序。 该应用程序是一个商业(即我没有源)的产品已被开发商中止,但我的公司仍然依赖于它,因为没有更好的产品在市场上这个极端利基的产品。 问题是,它每隔几天崩溃,并总是在最糟糕的时间(周末,凌晨3点等),我必须通过RDClogin到服务器,并重新启动服务器,手动重新启动应用程序,一旦服务器恢复。 服务器除了托pipe这个应用程序什么都不做 我已经尝试了win2k3,它仍然崩溃,所以一个操作系统的变化将无济于事。
我试图自动化这个服务器重新启动,然后重新启动应用程序,当它发现应用程序已经死亡。 我有一个方法来检测这个应用程序何时死亡,并有能力运行任何types的脚本/ exe文件。 该应用程序不能作为服务运行(我已经尝试了像这样工作,但没有机会)。 它必须在RDC用户的桌面上运行,并且没有办法解决这个问题,因为我需要频繁地在桌面上与它进行交互。 所以:
1:识别应用程序何时死亡(完成)2:完成后自动重启服务器(简单,完成)3:当服务器完成重新启动后,在pipe理员级别的RDC桌面上打开此应用程序。
我正式的问题是:我该怎么做#3?
任何build议将非常欢迎和赞赏。
我会说别人的话,但有点不同,因为我已经做了一些非常糟糕的程序(这两个程序都是时钟的轮询程序 – 这是什么程序民意调查时钟是糟糕的废话?):
以将运行该应用程序的用户身份login到服务器计算机。 设置用户的屏幕保护程序是安全的(即需要密码)。 您应该使用“空白屏幕”来保存CPU。
将快捷方式放置到您的脚本中以启动应用程序,并在“所有用户”“启动”组中testing其“活跃性”。 (确保你的脚本在检查它是否“死亡”之前给应用程序足够的时间来实际启动。)
从http://www.nirsoft.net/utils/nircmd2.html获取 “nircmd”的副本,并将其放入%SystemRoot%\ System32目录(或任何地方,真的)。 添加一个快捷方式到“所有用户”“启动”组呼叫:
%SystemRoot%\ system32 \ nircmd.exe屏幕保护程序
添加以下registry值,replace适当的用户名和密码。
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon
AutoAdminLogon - REG_SZ - 1
DefaultUsername - REG_SZ - 设置为用户名login
DefaultPassword - REG_SZ - 设置为login密码
DefaultDomain - REG_SZ - 如果使用本地帐户login,则设置为本地计算机的名称,如果使用域帐户login,则设置为域名。
ForceAutoLogon - REG_SZ - 1
在这一点上,电脑将启动并自动login为您指定的用户,启动应用程序和你的“死”脚本,并立即进入一个locking屏幕保护程序。 在启动期间保存的密钥不会停止自动login(但是,由于这是异地,希望他们的键盘/鼠标无论如何保护)。
如果你可以在W2K3上运行它,你可以在远程桌面客户端上使用“/ admin”或者“/ console”参数(取决于你使用哪个版本 – 做一个“/?”来看)连接到控制台会话。 您将需要使用自动login帐户使用的相同用户名和密码login,并且没有该用户名和密码的人将无法连接到控制台会话。
如果您必须坚持在W2K上运行它,请安装类似VNC的东西,以便您可以远程控制控制台会话。 如果您使用VNC,请务必修改存储计算机VNCconfiguration的registry项(HKEY_LOCAL_MACHINE \ Software \ ORL \ Winvnc for旧版本,其他位置为新版本)的权限以删除“Users”和“Power Users “从钥匙的ACL。 这将防止有限访问的用户读取VNC密码散列,这可以很容易地反转回VNC密码。
我就是这么做的
这里的关键是安全 – 简而言之,如果你遵循这些指示,你将不会有任何东西。
步骤是:1.自动login。 2.运行一个(cmd)batch file,在您login时启动您的程序。
对于自动login – 只需使用TweakUI – 这只是一堆registry文件,但TweakUI是写得很好的最好方法。
对于batch file,只需编写一个运行程序的cmd文件,并将其放在“所有用户”目录下的“启动”文件夹中。
这样做会有更复杂的方法,但是这种低技术的机制将会起作用,但是会100%地危及服务器的安全!
麦克风
我们必须在几个站点上执行此操作,并使用Mikebuild议的自动login。
既然你来自Linux背景,也许值得强调的是,自动login会自动提供一个用户名和密码的交互式会话,当服务器启动时,也就是有人坐在服务器上,按下ctrl-alt-delete并在服务器上login。 然后,应用程序从Startup文件夹运行,就像它为任何交互式用户一样。
NB RDC不参与。 这是一个交互式login。
很明显,安全性现在是不存在的,因为任何人都可以走到服务器并开始input。 但是,您可以将屏幕保护程序设置为很短的超时时间,以便快速locking交互式会话。 唯一的安全风险是,如果有人正在观看服务器重新启动,并可以在自动login和屏幕保护程序切入之间的时间抓住它。
JR
把你的应用放在虚拟服务器上怎么样? VMWare或Hyper-V,并使用Mike所描述的自动login?
在发布我的第一个回复之后,我只想到了这一点,但是如果将应用程序放在虚拟服务器中,则可以在交互式会话中运行该应用程序,并且不存在安全风险,因为虚拟机没有键盘和鼠标。
JR
在这种情况下,RDP是stream行的替代scheme,VNC允许您连接到控制台会话,无论它是否已经login。
我相信VNC可以保持适度的安全性,这取决于你使用的是哪个版本,而且是FLOSS。
您可以尝试TightVNC , UltraVNC , RealVNC , WinVNC …