我动用了一切可以动用的手段,想搞清楚xp中远程终端(远程桌面)登陆时winlogon的执行流程,but I failed, I'm afraid.
在服务器版(2000 server, advance server)里,可以有多个客户端同时远程登陆到服务器,针对每个登陆会话,都会有一个独立的winlogon进程启动,不会有影响。xp在同一时间里只允许一个用户的桌面被激活,如果一个新的远程登陆认证成功,当前激活状态的会话就会被注销。
我用写日志的手段跟踪,发现当远程登录时,系统中除了最初的winlogon进程外,又启动了几个winlogon进程,这几个进程之间互相通信,而且进程的输出在两个显示器之间切换,显示不同的对话框。
关键是gina中的同一个函数对每一个进程的反应不尽相同!我不知道gina怎样监测到winlogon的不同而运行不同的代码的?
GetSystemMetrics(SM_REMOTESESION)可以检测进程是否运行在terminal service中,同一个进程在不同的时刻检测可能是不一样的;而且,日志显示,这个值也无法完全确定WlxLoggedOutSas的行为(在日志中针对这个值分别显示Local process 和 terminal service)。我把日志帖上来,大家可以看一看。谁有这方面的资料啊?我估计快完不成任务了。分您随便要也可以,谢了!