注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 

日志

 
 

《Windows核心编程》学习杂谈(2) - 在虚拟桌面中创建进程  

2010-10-13 08:48:36|  分类: 《Windows核心编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include <windows.h>

int main(void)
{
     STARTUPINFO si;
     ZeroMemory(&si, sizeof(si));
     si.cb = sizeof(si);
     si.lpDesktop = "fuck";
     PROCESS_INFORMATION pi;
     ZeroMemory(&pi, sizeof(pi));

     if (!CreateProcess(NULL, "calc", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
     {
          MessageBox(NULL, "创建进程失败!", "提示", MB_OK|MB_ICONINFORMATION);
     }

     CloseHandle(pi.hThread);
     CloseHandle(pi.hProcess);
 
     return 0;
}

当为 STARTUPINFO 这个结构的 lpDesktop 成员赋值为任何的以'\0'结尾的字符串时,即使当前还没有创建这个虚拟桌面,系统也会在创建这个进程之前先创建一个名为“fuck”的虚拟桌面,然后再在其下生成一个calc.exe进程。

 

下图中当前任务栏中没有calc,但是进程中已经存在了。

2010年10月13日 - fly - 飞晴编程小屋
 
ps:当然要是 STARTUPINFO 这个结构的 lpDesktop 成员采用默认值,即不给他赋予任何的字符串,系统默认就是在当前桌面下创建子进程。
  评论这张
 
阅读(712)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018