通过实验,目前有三种方法都可以达到这种效果!
第一种:
修改注册表"HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"中的"shell"值(如果没有该键值,可以自己建一个,用API或者手动建立都可以,键值类型为StringValue,名称为shell,值为你要启动程序的完整路径),修改完成之后,重启,哈哈,是不是看到你想要的界面了?那如果想启动桌面怎么办?可以调用CreateProcess来启动"explorer.exe"进程.
第二种:
修改注册表"HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"中的"shell"值(如果没有该键值,可以自己建一个,用API或者手动建立都可以,键值类型为StringValue,名称为shell,值为你要启动程序的完整路径),修改完成之后,重启,哈哈,是不是看到你想要的界面了?那如果想启动桌面怎么办?可以调用CreateProcess来启动"userinit.exe"进程.
第三种:
通过CreateDesktop、SetThreadDesktop、SwitchDesktop相关函数建立一个新的桌面,然后切换过去,在那个桌面下启动你的程序.当然,也可以切换到默认桌面下.
其中,前两种方法,在具体使用时,可以调出taskmgr.exe进程,同时可以结束你的程序,并且可以启动explorer.exe,第三种就不会.因为taskmgr.exe进程只会在默认的桌面进程下可调用.