Windows 8.1 Start Screen – Behind the Scenes

Now that Windows 8.1 has appeared we now have some new features for the manipulation of the infamous Windows Start Screen.

While I was working at Microsoft during the Windows 8 Consumer Preview (Beta), I got a hold of an internal tool that was used to import/export/debug the Windows Start Screen internal data structures, it was kind of interesting, but I stopped using it. Why? Well, the tool stopped working after about Release Preview, apparently it was only designed for early Consumer Preview testing/debugging. But the *real* reason I stopped using it was because I mainly needed it for one scenario, to get the AppsFolderLayout.bin file, and since the prescribed method for extracting out the AppsFolderLayout.bin file was to use SysPrep.exe, I used SysPrep.exe instead. And to import the extracted file to a new computer, I would then copy the AppsFolderLayout.bin file to the default Start screen layout during deploy time. For more information see here.

There was one other scenario that I liked to use the internal tool for, and that was to view the internal structures used to store the start menu data. There were several instances during my development of the Microsoft IT Internal Windows 8 Consumer Preview standardized image where tiles I pined to the reference machine did *not* appear on the target machines. Where did the Tiles go? To solve that question I needed to view the internal *.xml file structure.

Let’s go and create some new Icons for our start menu to demonstrate:

  • Create a new shortcut in this directory: “C:\ProgramData\Microsoft\Windows\Start Menu\Programs”  Let’s call it “Shutdown.lnk”, and let’s make the command line: Shutdown.exe -s -t 00.
    Now let’s pin “Shutdown” shortcut to the start screen.
  • Find the program “Word Pad” and Pin to the “Start Screen”
  • Find the program “Notepad” and Pin to the “Start Screen”

PinStart

 

Now, lets export the Start Menu Configuration with the *new* Windows 8.1 Powershell command “Export-StartLayout”. Be sure to include the “-as XML” switch so we can view the internal data structures.

Export-StartLayout -as XML -Path .\Contoso-StartScreen.xml

View the exported file in Internet Explorer, and scroll to the bottom where the new Tiles were added:

...
  <tile FencePost="0" size="square150x150" AppID="WDExpress.11.0"/>
  <tile FencePost="0" size="square150x150" AppID="Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps"/>
  <tile FencePost="0" size="square150x150" AppID="Microsoft.AutoGenerated.{89B6E0C3-9FC0-3FD0-41CB-27CB0929D561}"/>
  <tile FencePost="0" size="square150x150" AppID="{6D809377-6AF0-444B-8957-A3773F02200E}\Windows NT\Accessories\wordpad.exe"/>
  <tile FencePost="0" size="square150x150" AppID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\notepad.exe"/>
</group>
</view>
</launcher>

Notes:

  • First off, note that the Start Screen meta data does *not* point off to the Start Menu Shortcut, instead it points to the *.exe itself.
  • Modern Windows 8 Store Applications don’t point to the executable, instead they point off to unique identifier of the Application within the system.
  • See the GUID values in front of Notepad.exe and WordPad.exe? What are they? A quick internet search reveals that they are unique identifiers for common Windows folders. Windows automatically replaces c:\windows\System32 with “{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}”. See http://msdn.microsoft.com/en-us/library/vstudio/bb882665(v=vs.100).aspx for a list of more common folders.

But, what happened to our Shutdown.lnk file? Instead of a pointer to the shortcut.lnk file we get some kind of internal GUID, which of course won’t mean anything to the target computer if we were to export this. I struggled to find ways around this, one work around would be to create a wrapper *.exe file and place it somewhere well known like: c”:\Program Files\Contoso Corporate\Apps\Shutdown-s-t-00.exe”, this program would then call the correct command line to perform the shutdown.

Hacky, but it works.

Update: I no longer have the internal Microsoft Tool, don’t ask me for it. “Export-StartLayout” and “Import-StartLayout” are the correct tools to use now. :^)

 

Advertisements

One thought on “Windows 8.1 Start Screen – Behind the Scenes

  1. Pingback: Windows Server 2012 R2 Remote Desktop Services — Настраиваем пользовательский интерфейс на серверах RD Session Host | Блог Юрия Кулакова

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s