熬夜大王 發表於 2016-9-24 12:33:24

在Windows Server 2012中如何快速开关桌面上经典的计算机、我的文档等通用图标

<p>我们都知道,在Windows Server 2012系列的服务器版本中都已经引入了Modern的现代界面作为默认的用户交互界面,同时满足视觉一致化,新版的服务器管理程序也做成了扁平化。因此传统的计算机(我的电脑)、我的文档这些经典图标默认是不会存在于传统的经典桌面上的。</p>
<p>为什么会有这样的开题,微软建议大家使用新得Modern模式,你还找原先的那些东西做什么?</p>
<p>那么场景来了,如果是一个需要给用户定制模板的模板提供方(用户有这方面的需求),或者是用户自行拿到了只有Modern的界面服务器如何自定义经典桌面上需要的图标,这里面需要一个简单有效的通用处理办法。另外就是你单纯靠自己找这个界面的开关,那是找不到的!不知道微软是什么意图,想用鼠标找到他,就是找不到!</p>
<p><strong>方法一:使用Windows自带的搜索功能</strong></p>
<p>需要搜索的关键字就是&ldquo;<strong>computer</strong>&rdquo;这个在各种语言中都是通用的</p>
<p>在Modern界面下面直接敲击键盘,输入computer,在设置(settings)项目下可以看到</p>
<p><img alt="image" height="641" src="https://img.jbzj.com/file_images/article/201609/2016092412353213.png" width="787" /></p>
<p>Figure 1Modern界面下搜索关键字&ldquo;computer&rdquo;即可找到</p>
<p><img alt="image" height="605" src="https://img.jbzj.com/file_images/article/201609/2016092412353214.png" width="804" /></p>
<p>Figure 2传统控制面板环境下搜索关键字&quot;computer&quot;也可方便找到</p>
<p>中文环境下,使用英文关键字一样有效</p>
<p><img alt="image" height="571" src="https://img.jbzj.com/file_images/article/201609/2016092412353215.png" width="799" /></p>
<p>Figure 3中文环境下使用英文关键字一样有效</p>
<p><img alt="image" height="644" src="https://img.jbzj.com/file_images/article/201609/2016092412353216.png" width="820" /></p>
<p>Figure 4在Windows 10 化境下一样有效</p>
<p><strong>方法二:使用命令行等非搜索方式</strong></p>
<p>此方法针对&ldquo;老司机&rdquo;用户,喜欢使用命令行操作的朋友。</p>
<p>我们借助procexp工具可以查看到开启程序所对应的系统命令行动作。</p>
<p><img alt="image" height="636" src="https://img.jbzj.com/file_images/article/201609/2016092412353217.png" width="972" /></p>
<p>Figure 5系统是通过rundll32程序进行了窗口的调用,实现开启一个带有参数的desk.cpl控制面板程序</p>
<p>显然上述的命令行对于老司机不合适,冗长不说,关键也不好记忆。</p>
<p>我们分析一下命令行里面的内容对其进行&ldquo;压缩&rdquo;。</p>
<p>首先我们需要了解&ldquo; <strong>&quot;C:\Windows\system32\rundll32.exe&quot; shell32.dll,Control_RunDLL desk.cpl,,0 </strong>&quot; 这一长串代表了什么。</p>
<p><strong>红色字体表明是主程序rundll32发起的进程</strong>,<strong>紫色的shell32.dll表明这是个需要调用图标显示壳有关的信息</strong>,<strong>绿色的Control字段表明这是个控制面板调用</strong>,<strong>蓝色的desk.cpl是真正触发的实体</strong>,</p>
<p>然后我们就可以这么压缩使用了。</p>
<p>对于需要使用命令行直接调取经典桌面图标开关的&ldquo;老司机&rdquo;朋友,您可以直接在运行或者cmd黑框里面输入<strong>desk.cpl,,0</strong>,即可实现快速打开经典桌面图标开关的对话框。</p>
<p>延伸</p>
<p>MVP写文章需要内容充实,所以在延伸部分会和大家讨论为什么微软会这样设计控制面板的开启。</p>
<p>最早的cpl程序出现在Windows 95 里面(<a href="https://support.microsoft.com/kb/149648" rel="nofollow" target="_blank">KB149698</a>),满足多种多样控制面板设置(那是一个时代的开启),也方便程序员写程序时候调用控制面板设置窗口。</p>
<p>而随着时代的进步,微软自我的变革,新的Modern界面诞生了,这个看起来将&ldquo;Windows&rdquo;窗口弱化的界面实际上是将原先固化好的窗口经过程序以及用户自定义窗口的结合,但是又由于用户使用习惯的原因一些经典桌面下的设置还是需要使用控制面板来进行配置,(插播,在Windows 10的操作系统中,控制面板更多的是被&ldquo;设置&rdquo;那个<img alt="image" height="33" src="https://img.jbzj.com/file_images/article/201609/2016092412353218.png" width="62" />齿轮而替代,强大的搜索减少用户再去鼠标指点的查找。)加上服务器操作用户还是能够尽量让服务器功能单一化,直截了当能够解决问题是一致的目标。可见微软这样处理也是一种折中的方式&mdash;&mdash;不完全关闭用户自定义经典桌面的渴望,又进一步引导用户使用搜索这样的高效率操作模式。</p>
<p>至于为什么要这样写&ldquo; <strong>desk.cpl,,0 </strong>&rdquo;,原因来自于传统窗口下的&ldquo;<strong>单窗口多页面(多标签、多选项卡)</strong>&rdquo;的设计思路。</p>
<p>某某.cpl,@m,n 这样的表示方法标识调用了 <strong>某某.cpl下的那个页面@m,上的第几个标签n</strong>。而通常情况下一个CPL程序只有一个主页面@m,因此微软的写法&ldquo; <strong>desk.cpl,,0 </strong>&rdquo;表明&mdash;&mdash;<strong>打开desk.cpl下的主页面中的第0号标签</strong>。用户看到的就是一个只有一个标签的desk.cpl程序。</p>
<p>好奇的我继续向下走,如果不带任何参数直接在Windows Server 2012下面打开desk.cpl会看到和设置分辨率一样的界面,(插播,在Windows 10下面已经不是传统桌面环境窗口了,这也证明了微软逐渐弱化传统桌面决心!!),而这个传统桌面的发起者是控制面板本身control.exe,后由explorer.exe来接管。</p>
<p>继续使用sysinternals的strings.exe程序进一步研究desk.cpl可以发现其中重要的一些开关项:</p>
<p>@Themes</p>
<p>@Desktop</p>
<p>@ScreenSaver</p>
<p>@Appearance</p>
<p>@Settings</p>
<p>他们分辨代表了@m中提及到的多种页面,而现在被拆分成若干个个体,虽然入口还是desk.cpl但是最终接管的进程已经不在是那个控制面板程序了,在此,进一步证明微软对于传统桌面弱化的决心,想想以后通过搜索就能进行功能的开关也是一种愉快的事情,真正的条条大路通罗马!上面的那些开关项通过字面就能了解到他们的含义。有兴趣的朋友可以自己跟着desk.cpl, 后面玩一玩(注意有一个半角逗号)。</p>
<p>通过strings.exe还发现一个项目叫做<strong>DESK.CPL,,1</strong>,这个也可以开启经典桌面下的图标开关窗口,这是为什么呢?让我们回忆一下Windows XP,用这个命令我们可以调出桌面窗口,而其中的自定义桌面就可以完成当时XP桌面上通用图标的设置。</p>
<p><img alt="image" height="464" src="https://img.jbzj.com/file_images/article/201609/2016092412353319.png" width="838" /></p>
<p>Figure 6回忆Windows XP 下面的desk.cpl,,1</p>
<p>或许是程序开发者的留恋,也可能是恰巧碰上,也可能是适应老程序兼容性等等理由。但无论如何,过去的就让它过去吧,要用新的思维去面对新带来的变化,用新的方法去解决问题。</p>
<p>-=EOB=-</p>
<p>参考:<a href="http://vlaurie.com/computers2/Articles/control.htm" rel="nofollow" target="_blank">http://vlaurie.com/computers2/Articles/control.htm</a> 关于控制面板的详解</p>
頁: [1]
查看完整版本: 在Windows Server 2012中如何快速开关桌面上经典的计算机、我的文档等通用图标