RT,一个已经被实现的想法.
程序运行在SYSTEM权限下(后台服务),在系统未登陆前(用户级别的explorer.exe还没有启动).这个时候,如果启动一个system权限的explorer.exe, 是否有机会跳过登陆验证?又应该在哪个会话里, 我能看到这个explorer启动带来的桌面呢? Winlogon OR Default?
程序运行在SYSTEM权限下(后台服务),在系统未登陆前(用户级别的explorer.exe还没有启动).这个时候,如果启动一个system权限的explorer.exe, 是否有机会跳过登陆验证?又应该在哪个会话里, 我能看到这个explorer启动带来的桌面呢? Winlogon OR Default?
解决方案 »
- vc 调用matlab 编译无错误,运行出错
- 我用VS2010写的程序,在WIN2000 SERVER上运行却显示是非法的WIN32程序,怎么解决呢?
- 有什么函数可以得到桌面图标排列方式?
- 关于组建包容的一个问题,请各位指教!
- 请问在VC下如何修改IE控件的背景颜色?
- 100分求助:请问怎样在VC6.0中输出一个带文字的表格到word xp 中,如果能输出图片就更好了???
- char *abc与cha efg[12]比较的问题!马上给分!在线等待!
- 看看这个东东。很有趣呀
- CoInitializeSecurity
- 求好人帮我解答一下,关于mfc 自动获取媒体文件之后如何自动播放
- mfc弱问(1)
- 声卡输出
{
if(BCreateNewDesktop)
{
//Security
SECURITY_ATTRIBUTES sa;
sa.bInheritHandle = true;
sa.lpSecurityDescriptor=NULL;
sa.nLength = sizeof(SECURITY_ATTRIBUTES); hvirtualDesk=CreateDesktop("newvitualdesk",NULL,NULL,DF_ALLOWOTHERACCOUNTHOOK,DESKTOP_CREATEMENU|DESKTOP_CREATEWINDOW|DESKTOP_READOBJECTS|DESKTOP_SWITCHDESKTOP|DESKTOP_WRITEOBJECTS,&sa); if(hvirtualDesk)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
TCHAR ExplorerPath[MAX_PATH]={0};
GetWindowsDirectory(ExplorerPath,MAX_PATH);
strcat(ExplorerPath,"\\explorer.exe");
ZeroMemory( &si, sizeof(si) );
ZeroMemory( &pi, sizeof(pi) );
si.cb = sizeof(si);
si.lpDesktop="newvitualdesk";
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW; if (!CreateProcess(NULL,ExplorerPath,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
*epid=0;
OutputString("CreateProcess %s %d",ExplorerPath,GetLastError());
return FALSE;
} Sleep(3000);
OutputString("CreateProcess %s %d",ExplorerPath,pi.dwProcessId);
*epid=pi.dwProcessId;
SwitchDesktop(hvirtualDesk);
return TRUE;
}
}
else
{
if(*epid)
BPskill(*epid);
SwitchDesktop(hOldDesk);
CloseDesktop(hOldDesk);
CloseDesktop(hvirtualDesk);
return TRUE;
}
return FALSE;
}
以上是我的代码, 在服务程序里, 在系统登陆的界面,通过远程网络调用.
奇怪的是只能切换到另外一个桌面,但是并不能看到explorer启动带来的桌面.