欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

Windows Vista如何以SYSTEM权限启动进程(2)

如何让用户能够看到SYSTEM下的进程?

在Windows 2000/XP下,这个不是什么问题。然而在Windows Vista下问题就来了。如果企图用AT命令启动某个Local SYSTEM进程,就会警告说不能和用户进行交互,哪怕加上/Interactive参数也不行!

原来在Windows Vista下,存在一个会话0隔离的问题。而AT命令所对应的Task Scheduler服务运行在会话0,而会话0是不能和用户进行交互的。

盆盆评注:这里要注意,会话登录会话,是两码事。具体的介绍,敬请期待后续的文章。

原来在会话0里,并没有WinSta0这个窗口站。天哪,又来了一个窗口站的概念,嗯,先不用管它,这里只需理解,窗口站用来保护进程的用户界面。只有WinSta0这个特殊的窗口站才可以接受用户的鼠标、键盘事件,才能和用户进行交互。

在Windows系统里,如果没有特别指定,SYSTEM登录会话里的进程,将会默认运行在Service-0X0-3E7$窗口站里,所以无法和用户进行交互。

所以很显然,要让以SYSTEM权限运行的进程,能够和用户进行交互,必须满足以下条件:

1. 必须不能运行在会话0下,例如可以运行在当前用户所在的会话下(例如会话1、2等)

2. 该SYSTEM进程必须运行在WinSta0窗口站。

对于开发人员来说,推荐参考Leo Jiang朋友的Blog文章,以便了解如何通过编程的方法,创建运行在WinSta0里的Local SYSTEM进程。

而对于IT Pro来说,我们可以借助Mark Russinovich所写的Psexec工具,让任意指定的进程运行在SYSTEM权限下。

而对于Windows Vista来说,其实有好些Local SYSTEM进程本身运行在WinSta0下(会话0),例如Winlogon进程、某个csrss进程,还有我们大家很熟悉的UAC提示对话框(consent进程),都运行在SYSTEM下,但是可以和用户进行交互。

已发表 2007年7月19日 1:22 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2007年7月20日 22:13 by aloki

# re: Windows Vista如何以SYSTEM权限启动进程(2)

想问个题外话,WinTec就是传说中的微软中文技术官方论坛吗?

2007年7月23日 9:07 by ahpeng

# re: Windows Vista如何以SYSTEM权限启动进程(2)

To aloki:WinTEC并非先前所说的微软官方的中文技术论坛。中文技术论坛目前正在测试中,还没有正式上线。

说说您的看法?

(必填) 
必填 
(必填)