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

Mar*_*tin 7 c# windows powershell binaryfiles windows-8.1

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

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

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

appsFolder.itemdata-ms的一部分

?%???????         ?   ?   S t o r e           Y+????BGJ   F   1SPS?w?
Run Code Online (Sandbox Code Playgroud)

我试着写一个解码器(使用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>
Run Code Online (Sandbox Code Playgroud)

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

我还使用了ILSpy来检查PowerShell Cmt-Lets,但最终却是非托管代码部分.

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

小智 4

不,这是不可能的,这是设计使然(并不是说我同意这种设计选择)。我与 Windows 产品组就此发生过几次争论。

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

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

任何一个:

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

  • +1,不幸的是,这对于 Window 8 来说是准确的。作为管理员,如果能够为我的组织提供合理的默认值,但仍然允许用户根据自己的喜好进行自定义,那就太好了。我听说这个功能将在 8.1 中推出。 (2认同)