Windows启动时打开一个非控制台会话

我知道如何在Windows主机启动时自动打开控制台会话(推荐的方法是使用encryption的密码: https : //docs.microsoft.com/en-us/sysinternals/downloads/autologon )。
当服务器运行一个需要运行GUI的错误编写的程序时,这是有用的,而它应该作为服务运行,或者至less在后台运行。

一旦会话打开,屏幕可以被locking,程序继续工作。 pipe理员甚至可以使用另一个会话进行RDP(这也locking了控制台会话)。 到现在为止,我没有看到这个例外。

这种方法导致几个问题。 一些最大的:

  • 一个会话在控制台上广泛开放。 服务器前面的任何人都可以完全访问这个会话,或者任何碰到不受监视的键盘/鼠标的东西都可能导致灾难。 我们可以通过短暂的屏幕超时来缓解这一点
  • 这样只能打开一个会话。 所以当我们需要为2个不同的和非同居的节目,我们是拧紧的

我想在服务器引导时自动打开几个非控制台会话。 就好像几个远程桌面会话在哪里打开然后断开。 然后,入侵的程序可以在单独的会话中与GUI一起运行。
– >任何想法如何实现?

mstsc.exe可以在没有GUI的情况下运行,在这种情况下这通常是无用的,但非常有用。
您可以创build计算机启动时启动的计划任务。
这个任务将启动你想要的许多远程桌面会话,然后杀掉它们,使会话保持活动状态并断开连接。

我personnaly使用调度的任务调用一批(.cmd):

 start c:\windows\system32\mstsc.exe "c:\path\do_it.rdp" timeout /nobreak /t 60 taskkill /f /im mstsc.exe 

我有一个更复杂的方法来杀死特定于我的需要的mstsc.exe,所以我只是把一个基本的taskkill的例子。

为了实现你刚刚提出的问题,至less需要一个带有GUI或Windows Server的Linux脚本。

在linux / bash中,我会编写一个ping监控脚本 ,在脚本运行之后,可能会重启服务器(ping一会儿)。 该命令将是一个脚本,在后台运行两次rdp客户端,预先提供的证书和有效的存储凭据(每个连接一个)到您的问题的服务器对象。 然后我会结束与脚本

 sleep 60 && killall -9 rdpclientname 

(因为杀死rdp客户端将不会终止远程会话,这是你想实现的一部分)。

我敢肯定,如果你想使用Windows作为客户端,你可以轻松地在Windows批处理而不是bash中执行此操作。 只是我不确定是否可以build立从同一个Windows客户端到同一个Windows服务器的多个连接。 我想,至less你必须使用两个不同的用户来运行这个脚本。 如果你不能,你将不得不把这些脚本放在两个不同的Windows客户端机器上。

如果您select使用Windows客户端,则由ping监控脚本激活的第二个脚本所调用的二进制文件将为mstsc.exe,并具有rdp-for-your-server-saved-session.rdp的完整path,包含preaccpeted证书和有效的凭据。

在Windows客户端上,您可以使用srv2any运行mstsc,脚本只会启动并停止这两个服务。 在胜利你将使用任务调度,在Linux中,crontab。

为了使这个工作,你需要,你必须禁用Windows服务器上的自动login。 然后你可以在这之后实现延迟的本地login。

该解决scheme当然有一定比例的失败,即ping监控脚本观察到的停机时间不会由于服务器重启而导致。 但是在这种情况下,两次自动不需要的login不会太多。

你必须努力工作和testing才能达到目的。 这就是为什么以下… 我会尝试任何其他的事情之前,build立这样的安排!


在任何情况下,正如我在你对我的问题的评论中所build议的那样,我只是想通过服务器上的srv2any来启动这个糟糕的程序。 你没有在你的问题中提到这个尝试。 你试过了吗?