通过解码“* .itemdata-ms”二进制数据文件(Windows 8.1,StartScreen,C#)自定义Windows 8.1 StartScreen

时间:2013-09-17 13:17:30

标签: c# windows powershell binaryfiles windows-8.1

我将尝试以更舒适且用户相关的方式编辑Windows 8.1 StartScreen。

我知道这不是Microsoft使用其操作系统的方式,但在企业环境中必须有一种方法来自定义StartScreen。 F.E.如果我部署一个新的软件包,StartScreen上应该有一个图标(在右边的组中,在预定义的位置)。

所以,我发现文件appsFolder.itemdata-msappsFolder.itemdata-ms.bak都是二进制编码的。如果我在十六进制编辑器中打开它们,有几个组名和链接可见但不是转储格式。也无法按照需要的方式在hexeditor中编辑此图块。

部分appsFolder.itemdata-ms

?%?????☺↔         ▼   ♠   S t o r e           Y+↨♣♦?BGJ   F   1SPS?w?

我尝试编写一个解码器(使用C#),没有成功,所有内容都可以查看,但只是像在十六进制编辑器中一样。

尝试使用PowerShell命令Export-StartLayout -as xml将所有内容以正确的方式,组,磁贴,位置导出到:

export.xml

<launcher version="2">
   <view name="Start">
     <group name="Desktop">
       <tile FencePost="0" size="wide310x150" AppID="Microsoft.Windows.Desktop"/>
       <tile FencePost="0" size="square150x150" AppID="Microsoft.InternetExplorer.Default"/>
       <tile FencePost="0" size="square150x150" AppID="Chrome"/>
     </group>
     <group name="Entwicklung">
       <tile FencePost="0" size="square150x150" AppID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Fiddler2\Fiddler.exe"/>
       <tile FencePost="0" size="square150x150" AppID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Notepad++\notepad++.exe"/>
      </group>
    </view>
</launcher>

但是Import-StartLayout没有按预期工作,使用此命令,先前导出的布局可以应用于当前用户(仅使用gpo,但是然后启动屏幕被锁定)。

我还使用ILSpy来检查PowerShell Cmt-Lets,但最终是以非托管代码部分结束。

简而言之,是否有办法解码二进制文件以编辑它们(可能是第三方工具?)并将其写回以将更改应用于当前用户?

3 个答案:

答案 0 :(得分:4)

不,这是不可能的,那就是设计(不是我同意那个设计选择)。我与Windows产品组就此有几个争论。

它类似于Microsoft锁定任务栏的方式。见here

  

注意:应用程序无法以编程方式将自己固定到   任务栏。该功能严格保留给用户。“

或者:

  1. 您可以通过组策略或在图片中为所有用户设置“开始屏幕切片”。 (锁定环境)
  2. 您允许用户根据需要自定义桌面(用户定义的环境)。

答案 1 :(得分:2)

我也正在研究编辑“开始屏幕”数据文件的方法。我已经通过GPO工作了,我使用.Net Reflector来分析Export-StartLayout cmdlet。它通过调用windows \ system32 \ twinapi.dll中定义的COM接口上的方法来工作,因此解码数据文件格式并不容易。

xml文件包含在注册表中定义的APP ID,可以通过PS get-startapps cmdlet列出,因此可以为此创建编辑器。

我与学校和大学合作,因此需要控制桌面。目前我处理的大部分学校都因为这些问题而远离Windows 8。似乎MS只是不听人们真正需要的东西!

答案 2 :(得分:1)

确保以二进制格式导出配置文件,因为Import-StartLayout不会导入XML文件。这是导出命令:

Export-StartLayout -As BIN -Path CustomStartScreenLayout.bin -Verbose