Windows 10 Startmenu Layout Baseline, плитка отсутствует

Я создал базовый план для своих развертываний Windows 10, который устанавливает макет StartMenu по умолчанию. (Мне пришлось сделать это базовым из-за внутренней политики, так что не спрашивайте :-).)

Этот базовый план создает XML-файл с данными, полученными из предыдущего экспорта Startmenu через Powershell. Скрипт работает и делает то, что должен делать без проблем. Но когда я вхожу в систему с новой учетной записью, в меню «Пуск» отсутствует плитка IE. Сценарий создает отсутствующий ярлык в «%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs», как я читал на нескольких других страницах. Но это исправление, похоже, не работает для меня.

Этот скрипт также удаляет приветственное видео Windows 10 для новых пользователей.

Это сценарий:

$key = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
$filecontent = @"
<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
  <LayoutOptions StartTileGroupCellWidth="6" />
  <DefaultLayoutOverride>
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
        <start:Group Name="General Apps" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:Tile Size="1x1" Column="2" Row="1" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" />
          <start:Tile Size="1x1" Column="3" Row="1" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" />
          <start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" />
          <start:Tile Size="1x1" Column="4" Row="1" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" />
          <start:DesktopApplicationTile Size="1x1" Column="4" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" />
          <start:Tile Size="1x1" Column="5" Row="0" AppUserModelID="Microsoft.People_8wekyb3d8bbwe!x4c7a3b7dy2188y46d4ya362y19ac5a5805e5x" />
          <start:Tile Size="1x1" Column="3" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />
          <start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationID="Microsoft.InternetExplorer.Default" />
        </start:Group>
        <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" />
          <start:Tile Size="2x2" Column="2" Row="0" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" />
        </start:Group>
        <start:Group Name="Remote Tools" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Juniper.Junos Pulse.UserInterface" />
        </start:Group>
        <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.lync.exe.15" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="Microsoft.Office.ONENOTE.EXE.15" />
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
</LayoutModificationTemplate>
"@

<# Remove Weclome Video #>

$res =  Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -ErrorAction SilentlyContinue
if (-not $res) 
    {New-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0" -PropertyType "DWord"} 
else 
    {Set-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0"}

<# Load XML Data #>
New-Item $env:ProgramData\testing\menulayout -ItemType directory
echo $filecontent |out-file $env:ProgramData\lmco\menulayout\LayoutModification.xml
Import-StartLayout -LayoutPath $env:ProgramData\lmco\menulayout\LayoutModification.xml -MountPath $env:SystemDrive\

<# Add IE Shorcut #>
$TargetFile = "C:\Program Files\Internet Explorer\iexplore.exe"
$ShortcutFile = "$env:ALLUSERSPROFILE\Microsoft\Windows\Start Menu\Programs\Internet Explorer 11.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
$Shortcut.TargetPath = $TargetFile
$Shortcut.Save()

<# Cleanup #>
Remove-Item $env:ProgramData\testing\menulayout -Recurse -Force

Просто хотел узнать, может ли кто-нибудь проверить это и посмотреть, получат ли они тот же результат. Или даже если кто-то нашел, как заставить показывать недостающие плитки.

Если я установлю плитку как ярлык с жесткой связью, используя что-то вроде <start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationID="%appdata%\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk" />, я полностью сломаю стартовое меню для пользователя.

Я также обнаружил, что иногда плитка магазина исчезает с самого начала, когда я вношу изменения только в строку IE, поэтому я получаю некоторые странные результаты.

Кроме того, когда я запускаю export-startlayout для пользователя, только что вошедшего в систему, я вижу, что в xml меню запуска нет записи об отсутствующих плитках.

И я также пробовал это с использованием фактического XML-файла для импорта, и я получаю тот же результат, запуская 2 строки вручную.

Это окончательная версия скрипта. В итоге не использовал его, к сожалению, но было приятно заставить его работать.

    <# Detect Office Version #>
    $office2013 = (Get-ItemProperty "HKLM:\Software\Microsoft\Office\15.0\Outlook" -ErrorAction SilentlyContinue)
    $office2016 = (Get-ItemProperty "HKLM:\Software\Microsoft\Office\16.0\Outlook" -ErrorAction SilentlyContinue)
    if($office2013) {$officeversion = "2013"}
    if($office2016) {$officeversion = "2016"}

    <# Reg Values #>
    $key = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"

    <# XML Data 2016 #>
    if ($officeversion -eq 2016) {
    $filecontent = @"
    <LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
      <LayoutOptions StartTileGroupCellWidth="6" />
      <DefaultLayoutOverride>
        <StartLayoutCollection>
          <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
            <start:Group Name="General Apps" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:Tile Size="1x1" Column="2" Row="1" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" />
              <start:Tile Size="1x1" Column="3" Row="1" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" />
              <start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" />
              <start:Tile Size="1x1" Column="4" Row="1" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" />
              <start:DesktopApplicationTile Size="1x1" Column="4" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" />
              <start:Tile Size="1x1" Column="5" Row="0" AppUserModelID="Microsoft.People_8wekyb3d8bbwe!x4c7a3b7dy2188y46d4ya362y19ac5a5805e5x" />
              <start:Tile Size="1x1" Column="3" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="{6D809377-6AF0-444B-8957-A3773F02200E}\Internet Explorer\iexplore.exe" />
            </start:Group>
            <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" />
              <start:Tile Size="2x2" Column="2" Row="0" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" />
            </start:Group>
            <start:Group Name="Remote Tools" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Juniper.Junos Pulse.UserInterface" />
            </start:Group>
            <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Microsoft.Office.WINWORD.EXE.15" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="Microsoft.Office.EXCEL.EXE.15" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="Microsoft.Office.lync.exe.15" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="Microsoft.Office.ONENOTE.EXE.15" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="Microsoft.Office.POWERPNT.EXE.15" />
            </start:Group>
          </defaultlayout:StartLayout>
        </StartLayoutCollection>
      </DefaultLayoutOverride>
    </LayoutModificationTemplate>
    "@
    }

    <# XML Data 2013 #>
    if ($officeversion -eq 2013) {
    $filecontent = @"
    <LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
      <LayoutOptions StartTileGroupCellWidth="6" />
      <DefaultLayoutOverride>
        <StartLayoutCollection>
          <defaultlayout:StartLayout GroupCellWidth="6" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout">
            <start:Group Name="General Apps" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:Tile Size="1x1" Column="2" Row="1" AppUserModelID="Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" />
              <start:Tile Size="1x1" Column="3" Row="1" AppUserModelID="Microsoft.Windows.Cortana_cw5n1h2txyewy!CortanaUI" />
              <start:DesktopApplicationTile Size="1x1" Column="2" Row="0" DesktopApplicationID="Microsoft.SoftwareCenter.DesktopToasts" />
              <start:Tile Size="1x1" Column="4" Row="1" AppUserModelID="Microsoft.WindowsStore_8wekyb3d8bbwe!App" />
              <start:DesktopApplicationTile Size="1x1" Column="4" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\SnippingTool.exe" />
              <start:Tile Size="1x1" Column="5" Row="0" AppUserModelID="Microsoft.People_8wekyb3d8bbwe!x4c7a3b7dy2188y46d4ya362y19ac5a5805e5x" />
              <start:Tile Size="1x1" Column="3" Row="0" AppUserModelID="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="{6D809377-6AF0-444B-8957-A3773F02200E}\Internet Explorer\iexplore.exe" />
            </start:Group>
            <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="Microsoft.BingWeather_8wekyb3d8bbwe!App" />
              <start:Tile Size="2x2" Column="2" Row="0" AppUserModelID="Microsoft.BingNews_8wekyb3d8bbwe!AppexNews" />
            </start:Group>
            <start:Group Name="Remote Tools" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Windows.RemoteDesktop" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="Juniper.Junos Pulse.UserInterface" />
            </start:Group>
            <start:Group Name="" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout">
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="Microsoft.Office.OUTLOOK.EXE.15" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\WINWORD.EXE" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\EXCEL.EXE" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\lync.exe" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\POWERPNT.EXE" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationID="{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Microsoft Office\Office15\ONENOTE.EXE" />
            </start:Group>
          </defaultlayout:StartLayout>
        </StartLayoutCollection>
      </DefaultLayoutOverride>
    </LayoutModificationTemplate>
    "@
    }

    <# Remove Weclome Video #>
    $res =  Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -ErrorAction SilentlyContinue
    if (-not $res) 
        {New-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0" -PropertyType "DWord"} 
    else 
        {Set-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE$key -name EnableFirstLogonAnimation -value "0"}

    <# Load XML Data #>
    $folderexist = (test-path $env:ProgramData\lmco\)
    if ($folderexist) 
        {New-Item $env:ProgramData\lmco\menulayout -ItemType directory}
    else
        {New-Item $env:ProgramData\LMCO\ -ItemType directory; New-Item $env:ProgramData\lmco\menulayout -ItemType directory}

    echo $filecontent |out-file $env:ProgramData\lmco\menulayout\LayoutModification.xml
    Import-StartLayout -LayoutPath $env:ProgramData\lmco\menulayout\LayoutModification.xml -MountPath $env:SystemDrive\

    <# Add IE Shorcut #>
    $TargetFile = "C:\Program Files\Internet Explorer\iexplore.exe"
    $ShortcutFile = "$env:ALLUSERSPROFILE\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk"
    $WScriptShell = New-Object -ComObject WScript.Shell
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
    $Shortcut.TargetPath = $TargetFile
    $Shortcut.Save()

    <# Cleanup #>
    Remove-Item $env:ProgramData\lmco\menulayout -Recurse -Force

person Nat Thulke    schedule 09.05.2016    source источник
comment
Я также только что подтвердил, что C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml имеет правильные данные, которые должны добавлять ссылку IE.   -  person Nat Thulke    schedule 09.05.2016


Ответы (1)


У меня были некоторые проблемы с IE в приложении. Насколько я узнал, Microsoft.InternetExplorer.Default, похоже, не работает, и хотя некоторые руководства говорят, что Microsoft.Explorer.Default будет работать для IE, это восходит к опечатке в одной из исходных статей о технете. Я заставил его работать, используя захваченный необщий AppID, который был

{6D809377-6AF0-444B-8957-A3773F02200E}\Internet Explorer\iexplore.exe

для 64-битных и

{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}\Internet Explorer\iexplore.exe

для 32 бит. Вы можете получить этот идентификатор с помощью команды Powershell «Get-StartApps» для всех возможных программ, поэтому:

Get-StartApps | где {$_.Name -ilike 'Internet Explorer*'}

Получить только IE, если он когда-нибудь сломается. Как вы можете видеть здесь, это GUID для папок ProgramFilesx64 и x86. Существует также общий файл для ProgramFiles ({905E63B6-C1BF-494E-B29C-65B732D3D21A}), но, поскольку он не указан в Get-StartApps, он, вероятно, не будет работать.

Однако, во-первых, это решение не работает в окнах x64 и x86 с одним файлом, а во-вторых, мне кажется, что в какой-то момент оно может сломаться. Это маловероятно, так как идентификаторы присутствуют, поскольку Vista и изменение GUID сильно нарушили бы совместимость, но все же я бы не стал полагаться на более неясный метод, пока есть альтернатива.

Поэтому я остановился на решении с файлом lnk. Однако, если вы это сделаете, вы больше не сможете использовать DesktopApplicationID, а вместо этого DesktopApplicationLinkPath. Правильный синтаксис должен быть:

<start:DesktopApplicationTile Size="1x1" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk" />
person Syberdoor    schedule 10.05.2016
comment
Спасибо, Syberdoor, я попробовал опцию DesktopApplicationLinkPath, но это снова убило меню «Пуск». Но пока {6D809377-6AF0-444B-8957-A3773F02200E}\Internet Explorer\iexplore.exe выглядит хорошо, мы развертываем только x64 в моей организации, и если у нас будет x86, то это будет менее 1% клиентов, поэтому мы можем управлять этим отсутствующим значком. Это может сломаться со следующим крупным обновлением, но, по крайней мере, сейчас это лучше, чем пустая плитка. - person Nat Thulke; 12.05.2016
comment
Странно, что ссылка у вас так и не заработала. Я добавил 32-битный идентификатор, а также метод для поиска этих идентификаторов. - person Syberdoor; 17.05.2016
comment
Привет! Эти идентификаторы приложений остаются неизменными между развертываниями, верно? Вы знаете, при каких обстоятельствах они изменились бы? (Я просто хочу убедиться, что не будет никаких странных проблем при создании образов нескольких машин.) - person iank; 18.05.2016
comment
У меня не так много опыта в этом, но я провел несколько тестов, и они всегда оставались неизменными. Кроме того, если вы посмотрите на то, как строится appid, он очень похож на путь, где Programfiles (x86/64) заменяется каким-то guid. msdn.microsoft.com/en-us/ library/bb882665%28v=vs.100%29.aspx подтверждает эту теорию. Сейчас никто не может гарантировать, что ms ничего не изменит, но согласно этой статье он существует с висты и не менялся, так что я думаю, у вас все будет хорошо. Если вы беспокоитесь, вы также можете создать xml на лету на основе команды get-startapps, но вы должны быть в порядке. - person Syberdoor; 19.05.2016
comment
Я добавил финальную версию своего скрипта, обнаруживающего офис 2013/2016. Он работает как базовая линия, как и предполагалось, но в итоге я его не использовал. Также может быть преобразован в пакет SCCM, который можно развернуть через TS. - person Nat Thulke; 20.05.2016