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

我将尝试以更舒适而不依赖用户的方式编辑Windows 8.1 StartScreen。

我知道这不是Microsoft使用他们的操作系统的方式,但是在企业环境中,必须有一种方法来定制StartScreen。 Fe如果我部署了一个新的软件包,StartScreen上应该有图标(在正确的组中,在预定义的位置上)。

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

部分appsFolder.itemdata-ms

 ?%?????☺↔ ▼ ♠ S tore Y+↨♣♦?BGJ F 1SPS?w? 

我试图编写一个解码器(使用C#),没有成功,一切都可以查看,但只是像在hex编辑器。

尝试了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,但是然后启animation面被locking)。

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

长话短说, 有没有办法解码二进制文件来编辑它们(也许是第三方工具?)并写回来将修改应用到当前用户?

不,这是不可能的,这是通过设计(不是我同意这种设计选择)。 我曾与Windows产品组讨论过这个问题。

这与微软锁定任务栏的方式类似。 看到这里 :

注意:应用程序无法以编程方式将自己固定到任务栏,该功能仅限用户使用。”

或者:

  1. 您可以通过组策略或在图像中为所有用户设置开始屏幕分块。 (锁定环境)
  2. 您允许用户自定义他们的桌面(用户定义的环境)。

我也在寻找编辑开始屏幕数据文件的方法。 我已经通过GPO工作,并使用.Net Reflector来分析Export-StartLayout cmdlet。 它通过在windows \ system32 \ twinapi.dll中定义的COM接口调用一个方法来工作,所以解码数据文件格式并不容易。

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

我与学校和大学合作,所以控制桌面的要求很高。 目前,我所处理的大多数学校都是远离Windows 8的,因为这样的问题。 似乎MS只是不听人真正需要的东西!

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

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