对Win8的WinRT环境的一些个人探索
来源:互联网 发布:ucloud定制mac 编辑:程序博客网 时间:2024/05/15 17:59
开发者预览版没装,就装了消费者预览版,折腾了很久,关于那个WinRT,有很多疑问:
1、Win32 API是R3和R0沟通的一层纸,所有用户层下调用的函数最终都会通过int3进入内核(Win32——sysenter——Kernel),那WinRT是否也是这样的呢?内核驱动内,如ntoskrnl等会不会有WinRT函数的最终R0入口?还是说WinRT函数原始就是基于Win32写的,接口是WinRT——Win32——Kernel这样的呢?
2、我研究了一下WinRT的运行环境,Win8中有3个WinRT相关服务,把其中那个WinRT后台作业服务在Win32下停止掉后,Metro程序就无法正常工作了。还有更奇怪的一个现象,如果我们使用管理员权限运行explorer,进入Metro界面点击任何一个Metro程序,都会提示无法运行,需要以非管理员权限运行explorer。从中可以看到:A、Metro是完全嵌入在explorer内的。(结束explorer后,Metro界面怎样都调不出来);B、WinRT宣称的权限管理限制,其实就是以非Win32下管理员权限运行后,防止程序使用WinRT API时的操作对Win32构成破坏,也就是说Win32依然是主要的!
3、从微软公开的Windows 8 New API List中,可以发现,以API形式添加到系统的大多数都是desktop only,仅有那么部分可以desktop + metro共用,Metro能用的接口基本上全是COM的。而我仔细观察了一下,发现一个很有意思的事情,添加给desktop only的API权限依然还是那样(恩,就如你熟悉的OpenProcess那样),而添加给metro可以用的API,没权限,仅是功能上的API罢了(如压缩API)。也还是证实了微软对WinRT的权限控制是在用户层API上做手脚。(并且Metro安装的时候,显示如android那样这个Metro应用程序会使用到那些功能,其实也就是微软扫描这个程序使用了哪些WinRT API,所以才把WinRT全做成COM的,而不是那个不可控制的Win32 API。)
4、在Win32下我们完全可以对WinRT进行破坏甚至删除WinRT,而Metro程序和Metro程序的配置文件也仅是在Program Files和AppData下的一个目录罢了(AppData下有一个完整的Metro程序环境变量,就如同你在Win32下的Roaming、LocalLow、Local这些目录一样),Win32下完全可以任意操作那些文件。所以所谓的WinRT安全性,在Win32下毫无任何意义可言。- 对Win8的WinRT环境的一些个人探索
- Win8与WinRt的区别
- 【Windows8开发】关于WinRT组件,WinRT dll,Win32 dll,WinRT exe组件的一些尝试
- 微软WinRT开发人员的一些解答
- Win8探索学习笔记(4)WinRT(desktop)之Hello,World
- Win8探索学习笔记(5)WinRT之语法扩展
- 我个人对openJPA的一些困惑!
- 对个人站长的一些小建议
- 个人对系统设计的一些感悟
- 对程序员的一些个人建议
- 对Spring的一些个人理解
- 个人对OTT的一些理解
- 个人对提高的一些想法。
- 对模板缓存的一些个人理解
- 个人对man命令的一些理解
- 对HBase的一些个人看法
- 个人对SQLite使用的一些体会
- 个人对Web组成的一些认识
- 时间复杂度为O(n)的排序
- 史鉴使人明智;诗歌使人巧慧;数学使人精细;博物使人深沉;伦理之学使人庄重;逻辑与修辞使人善辩
- LinkedIn创始人Reid Hoffman的新书:创业者应该有的3个方案ABZ
- Gluster利用开放存储打造低成本集群系统
- 不带确认的彻底删除ゴミ箱 && 带确认的彻底删除ゴミ箱
- 对Win8的WinRT环境的一些个人探索
- 创业时机选择:你的成功基因
- 粒子滤波分析
- timer,runloop,thread,task小总结
- VMware网络配置详解
- NeHe教程第6课纹理映射
- 如何区分分布式/集群/并行文件系统?
- jQuery1.7系列三: jQuery延迟列表(Deferred)
- IOS打印调用堆栈