Обновить/изменить макет меню «Пуск» в Windows 10 Pro для существующих пользователей.
Существует множество статей о том, как изменить меню «Пуск» в Windows 10 для всех пользователей, у всех них есть одна общая черта: они, похоже, работают только для новых пользователей, которые входят в систему. Мне нужно было найти способ изменить его для пользователей, у которых уже есть профиль, и у меня нет Windows 10 Enterprise.
Меню «Пуск» в Windows 10 хранится в файле базы данных, поэтому вы не можете действительно изменить макет меню. Однако есть способ его заменить, только имейте в виду, что вы замените всё меню «Пуск», включая недавно открытые элементы. Еще одно предварительное требование заключается в том, что пользователи должны выйти из системы, и вам понадобятся права администратора (но это не должно быть проблемой).
- Создайте макет меню «Пуск», убедитесь, что вы не используете никаких приложений в макете. Приложения должны быть установлены под учетной записью пользователя, чтобы они работали. Только обычные приложения, такие как Adobe Reader, и системные приложения, такие как Калькулятор, будут работать.
- Выйдите из системы пользователя и войдите в качестве администратора.
- Скопируйте данные из %systemdrive%\users\<имя_пользователя>\appdata\local\TileDataLayer на сетевой ресурс.
- Запустите следующий скрипт на клиентской машине:
Dim FSfolder
Dim subfolder
Dim i
startFolder = "c:\users"
localAppdata = "\Appdata\Local\"
layoutFolder= "TileDataLayer"
'Network share where the new layout is stored
newLayoutFolder = "\\filesrv\netlogon\_INSTALL\Win10\TileDataLayer"
set objShell = CreateObject("Wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Profile = strSysDrive & startFolder
Set FSfolder = objFSO.GetFolder(Profile) 'getting the user profile folders
For Each subfolder In FSfolder.SubFolders
If (subfolder.Name <> "All Users" And subfolder.Name <> "Default"_
and subfolder.Name <> "LocalService" and subfolder.Name <> "Public") Then
deleteFolder = Profile & "\" & subfolder.Name & localAppdata & layoutFolder
targetFolder = Profile & "\" & subfolder.Name & localAppdata
DeleteThisFolder(deleteFolder)
CopyNewLayout(targetFolder)
end if
Next
'*******************************************************************************************************
Function DeleteThisFolder(FolderName)
If objFSO.FolderExists(FolderName) Then
objShell.Run "CMD.EXE /C RD /S /Q """ & FolderName & """",0,True
End If
End Function
'*******************************************************************************************************
Function CopyNewLayout(FolderName)
If objFSO.FolderExists(FolderName) Then
objFSO.CopyFolder newLayoutFolder, FolderName, True
End If
End FunctionСкрипт пройдет через все папки пользователя в поисках папки "TileDataLayer". Если она будет найдена, скрипт удалит её и скопирует новую разметку в неё.