Прежде всего, это один из тех пограничных вопросов между сервером и суперпользователем. В конце концов, я решил, что он здесь, потому что большинство его аспектов вращается вокруг доменной среды.
Еще одно предостережение: это очень конкретный сценарий ответа на очень общий вопрос. Если бы задавался только сам вопрос, очевидным ответом было бы использование сценария запуска, а не сценария входа. Но это не вариант.
Прежде всего, конечной целью этого является простое развертывание истинного перемещаемого профиля в Windows 10, Без использования стороннего приложения. Спустившись к финишу в этом дизайне, мы подошли к последнему препятствию, и это было настоящим препятствием. Как мы перемещаемся по стартовому меню?
После многих, я имею в виду множества разных идей и испытаний, мы выяснили, что действительно работает.
Копирование папки% LocalAppData% \ TileDataLayer \ Database
Отлично, поэтому я могу скопировать всю эту папку в общий сетевой ресурс и повторно скопировать ее на любой компьютер, чтобы получить действительно перемещаемое меню запуска. Теперь я хочу автоматизировать этот процесс, используя сценарий входа в систему для копирования из общего ресурса и сценарий выхода из системы для копирования в общий ресурс. Легко, правда? Неправильно, чтобы скопировать папку, вы должны сначала остановить службу «Сервер модели данных плитки» (которая, кстати, останавливается только на долю секунды, а затем автоматически запускается снова).
Теперь мы подошли к сути проблемы. Команда Net Stop требует, чтобы вы запускали запрос с повышенными привилегиями, сценарии входа / выхода из системы выполняются только в контексте локального пользователя, а сценарий запуска / завершения работы не сможет скопировать меню запуска конкретного пользователя. Очевидно, я не могу разделить это на два отдельных скрипта и засунуть один в Startup, а другой в Logon, потому что служба останавливается только на долю секунды.
В конечном счете, моя текущая идея состоит в том, чтобы либо найти способ запустить net stop с повышенными правами в приглашении без повышенных прав, либо запустить команду без повышения прав. Есть ли способ сделать то же самое? Или есть более простой способ заставить эту папку перемещаться?
Я хорошо знаю обходной путь запуска сценария как запланированной задачи, но считаю это ужасным решением.
Поскольку это служба, которую вы можете остановить, попросите сценарий отключить службу, остановить ее, скопировать то, что вам нужно, повторно включить ее, а затем запустить. Чтобы отключить службу, вам нужно поиграть с реестром.
Экспортируйте следующий ключ в файл, к которому вы можете получить доступ: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tiledatamodelsvc
и сохраните этот «чистый» ключ в надежном месте. Затем удалите все, кроме ImagePath
строки, а затем измените эту строку, чтобы прочитать что-нибудь еще, например: %systemroot%\system32\svchostNOMORE.exe -k appmodel
а затем сохраните этот «поврежденный» ключ в другом месте в безопасном месте, где обычные пользователи не смогут добраться до него.
reg import "Path to 'corrupted' registry key"
net stop "ServiceName"
copy PathtoServer PathtoLocalStorage
reg import "Path to 'clean' registry key"
net start "Servicename"
Возможно, это могло временно нарушить звездное меню, но я смог просто убить проводника с помощью taskkill /f /im explorer.exe
а затем перезапустите его с помощью explorer.exe
и меню «Пуск» снова заработало. Я не изменял никаких данных плитки, поэтому ваш пробег может отличаться.