1

使用 Windows 2003,我正在寻找一种创建“注销脚本”的方法,该脚本将继续当前注销,然后立即登录另一个用户。因此,“UserA”注销。脚本触发登录“UserB”。

这是我们编写了“shell”的计算机应用程序升级的一部分;类似于信息亭应用程序。对于升级,我们需要以“Adminstrator”身份登录,然后在升级完成后,注销“Administrator”并以“sample_user”身份登录。我们想在不重新启动的情况下完成此操作。

请注意,我不想要启动注销(即“关闭”)的脚本。我正在寻找一个将在用户注销时运行的脚本(通过组策略设置)。如上所述,脚本应该登录不同的用户。

谢谢。

4

8 回答 8

6

不要认为以所述方式(注销时的脚本)是可能的。

您必须将机器设置为以指定帐户自动登录,然后注销(让它为您自动登录),然后您必须通过放置临时登录脚本再次禁用该功能......通常听起来很乱。

可以使用 Microsofts Shared Computer Toolkit 或类似工具进行实际设置(不太确定“正常”注册表自动登录在手动注销时的行为,但我有一个 XP 信息亭可以立即自动登录,即使你手动注销-您必须使用诸如 shift+logoff 之类的键覆盖它才能再次手动指定登录,因此可以以某种方式进行)。

“最简单”的方法可能是用您自己制作的人替换 msgina.dll ......

但是你为什么要这样做?只需使用runas并以其他用户身份启动您需要执行的任何操作,而无需注销控制台用户 - 毕竟它是一个多用户系统?桌面只是绒毛^^

无论如何,这将要求您的脚本可以使用用户凭据,这使得它在您损害该帐户的安全性时变得多余 - 违背了首先拥有第二个帐户的目的,无论它存在的目的是什么?

于 2009-02-03T19:24:44.707 回答
4

我会尝试将注册表设置为使用您想要的用户自动登录,然后简单地注销管理员用户。那应该重新登录您的信息亭用户。

于 2009-02-07T03:21:34.863 回答
1

不确定当前用户注销后如何登录另一个用户(不确定Windows是否会让您...)

但是你可以使用shutdown来注销:

shutdown /?
于 2009-01-20T19:28:11.757 回答
1

以下是一些可能属于“廉价黑客”类别的想法:

首先在 UserB 登录,然后使用runas /user:userA <cmd>运行安装过程的第一部分怎么样?

如果这是不可接受的,我知道有一种方法可以让 Windows 工作站(那些不属于域的工作站)在重新启动后自动登录到某个用户帐户。也许如果您查看发生了哪些注册表更改并复制它们,重新启动将自动登录该用户。(当然,作为最后阶段,在 userB 登录后,您必须恢复这些更改 :-)

我还想知道是否有一种服务可以强制打开“登录屏幕”以某个用户身份登录。也许使用某种方法,例如远程桌面远程执行它的方式......如果可能的话,那么您可以创建一个在用户A注销之前安装的服务,这将触发用户B的登录。

于 2009-02-04T18:04:42.527 回答
1

您可以使用 VNC 编写脚本(有很多免费版本,任您选择)。在机器上设置一个 VNC 服务器进程来监听 localhost。当用户注销时,您的注销脚本将使用 VNC 连接到机器并发送登录下一个用户所需的击键。VNC使用RFB(remote framebuffer)协议;有大多数流行语言的库,因此您应该能够快速获得一些工作。或者有相关的工具可能有所帮助。

于 2009-02-05T18:53:20.413 回答
0

如果您要以给定语言将这样的东西作为普通脚本运行,它很可能无法正常工作,因为当您注销帐户时,所有进程都应该与正在运行的脚本一起被终止。

您可能能够创建某种“服务”,该服务将在服务帐户(即始终处于活动状态)上运行,该服务帐户会自动为您执行此用户切换。

我的赌注是 Windows Powershell,尽管我不完全确定它在实际创建服务方面有什么功能。

快速搜索会出现以下内容(第二个链接是一个论坛,但它提到将 Powershell 作为服务运行并向该服务发送一个参数,该参数将是您的用户切换脚本的路径)

如何使用 Powershel 创建 Windows 服务

Powershell 脚本作为 Windows 服务

于 2009-02-03T21:00:02.207 回答
0

我没有 Windows 2003 服务器或具有“组策略”设置的系统来测试我的预感,但您可以查看 Windows 的 SU(“切换用户”)。最初是资源工具包的一部分,现已扩展到新的SUperior SU。如果可行,请发布结果/脚本。

于 2009-02-08T14:52:46.933 回答
0

您可以从构建远程控制实用程序(如 VNC 等)的角度来解决这个问题。这里最重要的是,如果你想访问登录屏幕(即 CTRL + ALT + DEL / 用户名/密码)部分,唯一的问题是 Windows 服务是唯一可以访问它的组件,所以你会必须创建一个。

我认为这个技术作为一个整体的唯一问题是,即使你花了很多精力让它工作(这将是一个相当大的努力),这个成功的机会与整个事情起源于一个即使以管理员身份重新登录时可能出错的事情的数量,注销脚本(即当东西关闭时)也很低。

请记住,对于您需要以管理员身份运行的任何内容,Windows 中有更简单的方法可以实现这一点(例如运行方式、更改需要更新的项目的用户权限等)。

于 2009-02-09T22:20:59.883 回答