我把我的DLL插入到WINLOGON后,用CreateProcess创建了一个新的进程,为什么这个进程没有界面,但是用任务管理器可以看到这个进程正在运行.而我把这个DLL插入到EXPLORER.EXE里边就一切正常.
这是为什么?
这是为什么?
解决方案 »
- 一个程序运行时出现的错误,帮分析一下
- 如何让LISTVIEW在单击滚动条的右面的三角时向右滚动一列?
- 请举个双重指针的简单例子!
- 那位侠客知道 pcanywhere 的模块是怎么一回事?
- 关于CDAORecordset的问题。怎么取出GetFieldValue()的值?
- 怎样的运行时把一张标准的Form设置成MDI的子窗体?
- 为什么我在InstallShield中添加了新的语言,但是Resouces中的String Table没有??
- TCP粘包问题
- 如何为菜单资源指定对话框类?
- 一段从MSDN里摘出来的英语,大家帮我翻一下
- 紧急求助
- 好久没来MFC了 ... 散分 200 ,问个老问题 : 工资
一般系统程序(比如winlogon)运行在LocalSystem帐户下,它拥有的windows station和desktop不具有交互能力。也就是说:不能显示窗口、菜单,不能接受鼠标、键盘等。WinLogon.exe产生3个桌面:
WinLogon桌面:就是那个登录的对话框所在的桌面。当用户登录以后,切换到default桌面
Default桌面:Explorer.exe 和所有用户程序运行的桌面。我们最经常用到的桌面.
Screen saver桌面:系统空闲时,运行的屏保桌面。你把dll插入到WINLOGON后,产生的新进程,仍然是系统进程,没有交互能力。你可以通过指定该进程的windows station(WinSta0)和desktop(default),它就能与你交互了。
当你把dll插入到EXPLORER.EXE,它是运行在登录的帐户下的,拥有交互能力。因此,就一切正常了。
http://community.csdn.net/Expert/topic/4117/4117272.xml?temp=.6930353
感谢kuangjingbo!
另外,windows station和desktop的主要作用,主要就出于安全的目的。如果,还能随意的设定别的进程的windows station和desktop,那么安全的目的就不在了。所以,我认为没有这种api。
在window2000以上,主要有三个桌面:default,winlogon,还有一个动态创建的屏保。
楼主要试下的话,在启动了程序后,你可以接下:alt_ctrl_del键,切换到winlogon桌面,看下有没有。???
急啊