如何让一个帐户始终登录 Windows 但允许与其他帐户进行其他会话?

如何让一个帐户始终登录 Windows 但允许与其他帐户进行其他会话?

我有一个 Windows 应用程序,它必须在运行 Windows Server 2000 的服务器和运行 Windows Server 2003 的服务器上以特定的用户/密码运行。这是一个关键应用程序,必须全天候运行。

每次我需要管理服务器时,我都需要使用此帐户凭据登录以避免关闭应用程序,因为它是一个显示大量信息的 Windows 窗体应用程序并且不能作为服务运行,而且因为它是一个第三方应用程序,所以我无法更改其代码以作为服务运行。

因此,运行该应用程序所需的帐户是本地管理员,这根本不安全,并且每个 Sys Ad 都需要有其凭据,这也不安全,因为我无法跟踪谁做了什么。

我需要找到一种方法来让帐户始终保持连接并运行应用程序 [当然,直到有人明确注销它 :)],并且每次我需要检查应用程序上的某些内容时,我都可以使用此帐户登录并打开同一会话。但是当有人需要管理服务器时,他/她可以使用他/她的管理员帐户进行连接,这样不会注销其他帐户。

我怎样才能实现这个目标?

只是为了说清楚:

我需要一种方法来在服务器(Windows Server 2000 或更高版本)上登录两个会话。

其中一个会话将使用常规帐户凭据来运行应用程序。此会话只能由用户自己注销,或由企业管理员强制注销。如果有人登录服务器,即使是本地登录,也不会注销此会话。

其他帐户,如本地管理员、域管理员甚至普通用户都可以打开新会话和/或在服务器上本地登录,而无需关闭其他连接。

场景就是这样。:)

答案1

您是否考虑过将应用作为服务运行?然后可以设置服务使用您的特定用户/密码,您不再需要费尽心思处理会话来保持其特定运行。

答案2

根据与服务器交互的主要方法(通过控制台本地或通过 RDP),有 2 个选项。请记住,Windows Server 通常总共有 3 个交互式会话 - 控制台会话和 2 个远程会话(除非它是终端服务器,在这种情况下您会受到 CAL 的限制,但我认为您在这种情况下不会使用终端服务器)

我认为,真正解决该问题的根本方法是告知所有有权注销该用户的人不要注销他们。任何与服务器交互的管理员在登录时都会看到一条消息,告知他们“服务用户”当前是否正在使用该会话,并且他们可以选择是否注销他们。这实际上归结为他们单击“是”或“否”,因为如果他们是服务器上的管理员,他们有其他方法可以注销“服务用户”,而无需直接与登录框交互(如果他们真的想这样做的话),而且绝对没有办法绕过这一点。管理员可以注销其他管理员和用户,而普通用户只能登录或注销自己 - 这是设计使然。

鉴于您不希望人们意外地执行此操作或至少尽可能少地看到“是”或“否”对话框,您可以使用控制台会话或使用远程桌面的 RDP 会话登录用户,具体取决于其他管理员访问服务器的方式。

1) 如果管理员通常通过远程桌面连接到服务器,那么您将需要为“服务用户”使用控制台会话,因为大多数管理员将在不使用 /console 或 /admin 开关的情况下进行连接(具体取决于 RDP 客户端的版本)。他们可以登录和注销,而无需接触“服务用户”的会话。如果已经与服务器建立了 2 个远程连接,他们将无法登录,也不会有机会注销“服务用户”。但是,如果他们在 RDP 会话中使用 /console 或 /admin 开关,则将向他们显示注销“服务用户”的窗口。

2) 如果管理员通常使用控制台会话直接与服务器交互,那么最好使用其中一个 RDP 会话来登录“服务用户”。请注意本地服务器或组策略中的终端服务配置,因为它可以配置最大会话限制,以便在一定时间后注销远程会话,无论用户是否空闲。

答案3

您可以使用远程(RDP)会话登录运行该应用程序的帐户,然后断开该会话。

答案4

正如 Chris_K 所说,您最有可能真正想要的是将程序作为服务运行 - 这将允许它使用分配的用户名/密码在后台运行,而无需主动登录,并且不会在人们登录/退出服务器时消失。

您需要一个名为 SrvAny 的程序,它能够将任意程序作为服务运行。它可直接从 Microsoft 获得,是 Windows Server Resource Toolkit 的一部分。

安装 SrvAny 后,您可以使用命令“InstSrv NameOfYourProgram c:\Path\To\YourProgram.exe”。然后它会出现在服务屏幕上。您可以进入服务并为其设置选项,例如用户名和密码。

相关内容