查看原文
其他

自动化运维工具对Windows系统远程管理

2017-02-23 云技术实践

在windows2003以及更早期的系统中,当第一个用户登录系统后服务和应用程序时在同一个Session中运行,一般是Session 0,以后再登录用户则在Session 1、Session 2 …中运行,如下图。


这种方式的好处是以System用户启动的服务也可以和第一个桌面用户进行交互。

在windows 2008以及以后的系统中,微软改变了这种方式,Session 0中只包含了系统服务,其他应用则在不同Session 中运行。如下图:

这样确实提高了系统的安全性,但也带来一下麻烦,由于Session 0与其他Session直接无法进行交互,不能通过服务向用户桌面弹出消息、UI窗口等,也给我们批量管理windows服务带来一些困扰。譬如,管理一批Windows系统服务器,这些服务器上运行应用都是有UI界面的,需要用集中化的自动化运维工具远程对这些应用做启动、停止、更新等操作,当通过自动化运维工具直接启动这些应用时,发现进程已经启动,但是UI界面看不到,功能也不正常。实际情况是这些应用是在Session 0中运行,我们登录用户则是在Session 1中,所有不能交互。

如何解决这样的问题呢?

可以通过InteractiveServices Detection系统服务将这些应用的在Session 0中的信息窗口已告警弹窗的形式显示给Session 1的桌面用户。

一:将Interactive Services Detection系统服务设置成自动运行,如果是应用是32位的,设置成手动启动也是可以的。

二:将自动化运维工具的Agent服务设置成“允许服务与桌面交互”

三:将要远程管理的应用通过“”注册成服务,并将服务设置成“允许服务与桌面交互”。然后就可以通过自动化运维工具来远程的启动、停止该应用了。“”是Windows Resource Kits工具集中的两个工具,可以去微软下载。

具体来举个例子:

我们将记事本程序notepad.exe注册成服务,服务名就叫note,并通过Saltstack来远程启动或关闭它。

首先:我们从微软下载“”两个工具放到C:\Windows\Syswow64\文件夹下。

1、 注册服务note:

C:\>instsrv.exe note c:\windows\SysWOW64\srvany.exe

2、在注册表中将note服务项进行配置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\note建立Parameters项目,并在Parameters项下新建以下几个字符串值。

名称 Application 值为你要作为服务运行的程序地址。 

名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。 

名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数

3、设置“note”服务未允许服务与桌面交互

这样我们就可以通过Slatstack远程执行net start note命令就可启动notepad程序了,登录系统可以看到有探测告警。

点击查看消息,这可看到notepad程序界面,并可操作。

本文转载自订阅号“G云定制云“



加入云技术社区技术交流微信群,联系北极熊微信:hadxiaer(加的时候请备注:姓名-城市-公司)

交流 分享 提升

云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。旗下运营:云技术实践、云技术、桌面云之云潮涌动等公众号,以及相关的微信群和QQ群,覆盖云计算领域的技术人群,加入云技术社区微信、QQ群请点击订阅号菜单“群和活动”近期投稿采用后送新出版的《运维前线》,投稿邮箱502207183@qq.com。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存