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

本文关键字:StartScreen Wi 自定义 Windows 解码 itemdata-ms 文件 数据 二进制 | 更新日期: 2023-09-27 18:31:33

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

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

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

appsFolder.itemdata-ms 的一部分

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

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

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

出口.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,但这以非托管代码部分结束。

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

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

不,这是不可能的,这是设计使然(并不是说我同意这种设计选择)。 我和Windows产品组就这个问题有过几次争论。

它类似于Microsoft锁定任务栏的方式。 看这里:

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

也:

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

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

XML 文件包含在注册表中定义的应用 ID,并且可以由 PS get-startapps cmdlet 列出,因此可以为此创建编辑器。

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

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

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