汗啊,逆向Windows可不是容易的事,对于我来说就更难了。。

所以,我就用一些工具和丰富的Windows软件开发经验来简单滴研究一下Windows10沸沸扬扬的"虚拟桌面"

其实大家都知道,虚拟桌面其实在很早就有了,市面上就有一些虚拟桌面软件,我也有偶然得到了一款虚拟桌面的源码,这些虚拟桌面软件其实都是调用了一个叫CreateDesktop(Ex)的API而已,所以我就以为Windows10虚拟桌面也就是调用了一下这个API而已,但是又很奇怪,毕竟Windows10虚拟桌面可以让窗口随意切换桌面,但是根据微软的规定,一直以来都是“如果一个线程没有UI,那么他可以通过API修改自己所属于的桌面,如果线程有UI,那么他不能切换桌面”,难道Windows10要打破这一规则么,那为何MSDN上没有说明呢?这里面又有什么不为人知的隐秘呢?

昨天装了一天的虚拟机,操蛋,太操蛋,装了4次。。。第一次装个2000练练手,装好了就删了,第二次,用virtualbox装w10,结果装完工具重启一下说驱动程序签名错误,还不能修复,高级启动(因为里面有禁用强制签名)还点不动,于是果断卸掉virtualbox,改装vmware,还是vmware好用啊,就像windows比linux好用一样,开源的东西经常出一些问题,vmware估计给买了权威CA的签名了,所以不会出现驱动签名的问题,好吧,结果今天我又把w10玩坏了,开始菜单点不动了,重启也不行(不愧是预览版),没办法,今天重装。。。我可怜的硬盘,我可怜的cpu。。。

先看看我的用的w10吧,应该是10074.。不是很新,不过没办法。。更新卡住0%不动弹。。

开始测试:

首先,创建一个“Win10虚拟桌面”,然后运行我写的一个工具(目前只是半成品),他能枚举桌面,但是发现当前只有一个桌面(默认桌面)

然后运行一个虚拟桌面软件,同时创建一个桌面:

随后仔使用我写工具枚举桌面:

发现多了一个桌面!!!这意味着。。

结论1:win10虚拟桌面和windows桌面机制无关,同时win10上的桌面机制和依旧可以正常工作,也就是说win10虚拟桌面是采用了其他办法在一个桌面上实现的。

我在这里猜测:是不是shell或者init在当前桌面创建了很多“子桌面”,不同的窗口可以随时使用setwindowlong设置父窗口实现,但是一想又不对,还是让spy++来看看吧

(win10UAC的盾牌变得好难看。。)

果然没有任何端倪,和其他windows一样。

把spy++放到其他的“win10虚拟桌面”,发现窗口没有变!!

于是我干脆监控消息,发现切换到窗口所在桌面时窗口响应了几个偏门的消息

结论2:win10虚拟桌面有可能是通过窗口消息实现的,窗口切换到其他桌面时,窗口的一切没有改变,包括坐标,是否隐藏等等。

在首先在win10的一个win10桌面隐藏窗口,在另一个桌面显示,发现窗口显示到了这个桌面。

然后我运行我做的后台软件,发现命令后台软件创建其他进程时窗口显示在当前桌面。

结论3:后台程序创建窗口,创建进程,或者把隐藏的窗口显示出来,都在当前win10桌面。

然后装了一个360,发现360的加速球(看右下角)可以不受win10桌面机制的影响,切换桌面依旧有!大家都应该知道这是个总在最前工具窗口

然后我自己写了一个工具窗口
CreateWindowEx(WS_EX_TOOLWINDOW|WS_EX_TOPMOST,。。。。
即创建一个WS_EX_TOOLWINDOW(工具窗口)WS_EX_TOPMOST(总在最前)的窗口

发现和360的加速球一样。

结论4:总在最前的工具窗口不受win10虚拟桌面影响,如果我们要给用户发一个通知,应该用总在最前的工具窗口。

暂时就这么多,等win10正式版发布了再研究。

对Windows10虚拟桌面的简单研究相关推荐

  1. 虚拟桌面:一个简单的桌面管理工具

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家拍砖! 参考英文文章: <<Virtual Desktop: A Simple Desk ...

  2. 盘点Windows10系统的使用小技巧三 —— 虚拟桌面

    目录 用途介绍 使用介绍 快捷键介绍 很多时候,我们总是因桌面上那多且凌乱的窗口而烦躁不堪,有时候多希望能够同时使用多个显示屏,然而这并不现实. 其实,Windows10系统已经自带了一个解决方案-- ...

  3. [AHK]Windows10中如何只通过键盘就将窗口移动到其他虚拟桌面?

    最新解决办法: ; Capslock + 数字 --> 切换桌面 ; Capslock + Shift + 数字 --> 把当前窗口带到某桌面 ; [Switch to desktop] ...

  4. Windows10下简约桌面的简单操作方法(无需下载软件)

    Windows10下简约桌面的简单操作方法(无需下载软件) 1.将所有卓面的软件,鼠标右击,选择"固定在"开始"屏幕" 2.然后在开始屏幕,进行分类,我是将常用 ...

  5. Windows Sysinternals Desktops v1.0 发布 - 超简单的虚拟桌面程序

    图形界面中的可切换桌面机制一直是Linuxer们的骄傲,但很明显,微软开发出了更好的程序. 强悍的Sysinternals团队发布了一个多桌面工具,它不但可以完成类似于Linux虚拟桌面这样的任务,还 ...

  6. 桌面虚拟云终端技术研究

    欢迎使用聚锐网出品的博客离线编辑及群发工具[×××] 云计算的应用有许多方面,我们可以举出iPhone.iPad.手机视频等云计算的具体应用,但是唯独最早带我们进入信息化时代的笔记本和台式机,我们却很 ...

  7. 【windows10 切换应用程序、虚拟桌面的快捷键, 详细使用教程】

    在 Windows 10 中,您可以使用以下快捷键在前后切换应用程序: Alt + Tab:在打开的应用程序之间切换,按住 Alt 键,然后连续按 Tab 键,直到您到达所需的应用程序,然后松开 Al ...

  8. Windows10系统快捷键创建一个新的虚拟桌面

    Win键+Ctrl+D:创建一个新的虚拟桌面 Win键+Ctrl+F4:关闭虚拟桌面 Win键+Ctrl+左/右:切换虚拟桌面

  9. Windows10 切换虚拟桌面的任务栏图标顺序混乱的解决方案

    以下所有言论基于 Windows 10 的 1803 版本. Windows 10 引入了虚拟桌面特性,但是它有个限制: 使用鼠标切换(点击开始菜单旁的任务视图)虚拟桌面不会保留任务栏上的图标的自定义 ...

最新文章

  1. 单片机找工作好找吗?不懂英语怎么学会单片机?
  2. 编码原则:不变量/前置条件/后置条件
  3. 闲话WPF之二六(WPF性能优化点)
  4. ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
  5. [转]asp.net 动态添加多附件上传
  6. EIGRP路由汇总与安全性配置
  7. 如何理解熵、交叉熵、KL散度、JS散度
  8. project sms / BSS / OSS / ESS / dianxin / youbian / iccid / puk / pin
  9. php取名字第一个字,php 获取姓名拼音首字母
  10. oracle根据汇总报表计算结余
  11. c语言编辑二维数组转置,求C语言程序:编写一个函数,使给定的一个二维数组(3*3)转置。感激不尽...
  12. 黑苹果 macOS 无法修复磁盘 XXX 已修复
  13. sql语句执行顺序及简单优化
  14. python第三方插件登录网易音乐_项目实战 | Python开发网易云音乐插件
  15. 一剂拯救“国足”的终极药方:全面 AI 化
  16. python中函数的作用不包括_Python 列表不包含了以下哪个内置函数( )_财经法规答案_学小易找答案...
  17. AdminLTE模板框架
  18. 在qt中实现图片的加载
  19. 用外业精灵完成施工前(光缆、电缆、拆迁)相关的踏勘-点位采集
  20. 讲一个常用的JDK8的STREAM超实用技巧

热门文章

  1. ensp配置ACL访问控制列表
  2. 华为快应用IDE——让快应用开发更快
  3. POI 导出Excel 带图片导出 使用XSSFWorkbook
  4. C++解析3d模型文件jt
  5. 【Matlab经典智能算法】新手入门第十六天
  6. Flask04_模板语法
  7. 集体智慧编程ch2——提供推荐
  8. AD2019查看网络走线
  9. CMake 安装教程
  10. d盘莫名其妙被占空间 win10_为何联想电脑的win10系统d盘突然显示储存空间不足...