需要在一个服务里面判断desktop是winlogon还是default,在XP里面可以用OpenInputDesktop,和GetUserObjectInformation得到返回的是Winlogon或者Default。但在Win7里面,得到的都是Default。应该有方法判断的啊,他们都在WinSta0,就是没找到方法!
一个办法貌似可行,在进程中寻找LogonUI.exe,如果发现应该就是Winlogon。
一个办法貌似可行,在进程中寻找LogonUI.exe,如果发现应该就是Winlogon。
解决方案 »
- 求OLE操作Excel sheets.add函数的详细用法
- inf文件中destdir指定的路径问题
- 求关于HDC的清晰解答
- 我的CHtmlView显示出来为什么是这样的呢
- LINK : fatal error LNK1104: cannot open file "mfc42u.lib" 这是什么错误?
- 我用的是MFC,我的TREE CONTROL控件里没有RBUTTONUP消息,我应该怎么添加上????
- 在CHTMLVIEW里,当窗口移动时,怎么接收不到ONDRAW消息,应该在哪里接收?
- 如何在一个Dialog上加载一个CTreeView对象??
- 如何在windowsNT下获得网卡的IP地址以及掩码?
- 关于用VC访问数据库的问题.
- 大侠们帮帮忙,VS2005 MFC,标签页关闭的实现!
- 如何获取Chrome浏览器的WM_MOUSEMOVE 和 MK_LBUTTON消息
我得到的怎么都是default啊,难道是在虚拟机中的原因,但下面这个也是都Default
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/009fa335-f6bf-4372-a76d-d59b6c2daf5a/
是首次登录前,或者在使用过程中按下"Win+L"键后切换至的桌面吗?如果每个session都有,那要显示的时候,系统如何决策要显示的是哪一个session的winlogon桌面?
那当多用户同时登陆(fast user switch),其中某当前用户(active console session)注销后,此时显示的是哪一个session的winlogon桌面?是不是从default到winlogon桌面的切换时,产生 session lock事件(也就是按下win+L)。反之 session unlock事件?
黑屏的时候是正在切换的状态
注销的时候,是直接 从 session N 的default 切换至 session 0 的winlogon ?这样?
说是翻译自MSDN,我在MSDN2008中却没找到在哪里。。1. 用户登录的过程被激活
2. 在用户会话过程中当用户按下CTRL+ALT+DEL
3. UAC对话框被打开的情况下不知道对不对.
win2k3以前的系统就是1种了(SAS三键)。
过滤驱动代码?哪个层的?去哪看啊?
(1)由用户A选择切换用户进入winlogon界面,然后选择用户B:DISCONNECT sessionid=1,CONNECT sessionid=2,LOGON sessionid=2(此前用户B未登录,那么这个2应该就是用户B的session了)
(2)再由B切换到A:DISCONNECT sessionid=2,CONNECT sessionid=3,DISCONNECT sessionid=3,CONNECT id=1【这里的3是谁的session,session0?如果是,是不是(1)中CONNECT sessionid=2的2也是session0,当用户B登录的时候,B的sessionid变成了2,session0的id变成了3?】
FindWindow(TEXT("Progman"), NULL)
session 1不注销,第二个登录的是session 2
session 2不注销,第三个登录的是session 3我还真没注意,session id 是一直递增,还是重利用。。
那么,现在只有两个用户,id=3是谁的?当B注销后,再次登录,我发现B的sessionid变成了2。
再切换到用户A(id=1),中间也有个id=3的session,是不是有个session专门处理用户切换了
要OpenInputDesktop首先要把进程的窗口站设置为WinSta0,而服务一开始的窗口站不是WinSta0
OpenWindowStation("Winsta0",...)
SetProcessWindowStation()