Я пытаюсь заставить работать скрипт, который изменит обои по умолчанию для windows 10, потому что я буду развертывать Win10 для всех клиентов. Когда я запускаю код пакета ниже, он не меняет обои по умолчанию. Я вижу, что файл img0 находится в правильном каталоге C:\Windows\Web\Wallpaper\Windows, но он не меняет фон. Код ниже - это то, что я использую. Я получаю некоторые ошибки доступа запрещены при попытке del C:\Windows\Web\4K\Wallpaper\Windows\img0_1366x768.jpg Доступ запрещен.

takeown /f c:\windows\WEB\wallpaper\Windows\img0.jpg
takeown /f C:\Windows\Web\4K\Wallpaper\Windows\*.*
icacls c:\windows\WEB\wallpaper\Windows\img0.jpg /Grant System:(F)
icacls C:\Windows\Web\4K\Wallpaper\Windows\*.* /Grant System:(F)
del c:\windows\WEB\wallpaper\Windows\img0.jpg
del /q C:\Windows\Web\4K\Wallpaper\Windows\*.*
copy %~dp0img0.jpg c:\windows\WEB\wallpaper\Windows\img0.jpg
copy %~dp04k\*.* C:\Windows\Web\4K\Wallpaper\Windows

Есть идеи, что я делаю не так? ТИА

C:\Users\Administrator\Desktop\ReplaceWallpaper>(
Takeown.exe /F "C:\WINDOWS\Web\" /R /D S
 Icacls.exe "C:\WINDOWS\Web\" /Grant "Administrator":"F" /T
 Del /Q "C:\WINDOWS\Web\wallpaper\Windows\img0.jpg"


    Copy "C:\Users\Administrator\Desktop\ReplaceWallpaper\img0.jpg" "C:\WINDOWS\Web\wallpaper\Windows\img0.jpg"
     REG ADD "HKCU\Control Panel\Desktop" /V "Wallpaper" /T "REG_SZ" /D "C:\WINDOWS\Web\wallpaper\Windows\img0.jpg" /F
    ) 1>Nul
    ERROR: File or Directory not found.
    C:\WINDOWS\Web" /Grant Administrator:F /T: The filename, directory name, or volume label syntax is incorrect.

3 ответа3

2

Имя пользователя, которое вы задали в команде Icacls неверно, вы должны работать от имени администратора, предпочтительно используя скрытую встроенную учетную запись администратора, если вам отказано в доступе и вы используете свое имя пользователя.

Во-вторых, не забудьте установить значение реестра Wallpaper текущего пользователя в разделе HKEY_CURRENT_USER\Control Panel\Desktop , которое указывает на его текущие обои.

Обратите внимание, что выход из системы / перезапуск требуется на ограниченном языке, таком как Batch, который не может уведомлять об обновлении системной среды.

Попробуй это:

Set "oldWall=%WinDir%\Web\wallpaper\Windows\img0.jpg"
Set "newWall=%~dp0img0.jpg"
Set "WallPath=%WinDir%\Web\Windows\"

(
Takeown.exe /F "%WallPath%" /R /D S
Icacls.exe "%WallPath%" /Grant "%username%":"F" /T
Del /Q "%oldWall%"
Copy "%newWall%" "%oldWall%"
REG ADD "HKCU\Control Panel\Desktop" /V "Wallpaper" /T "REG_SZ" /D "%oldWall%" /F
)1>Nul

Но если ваша цель заключается в развертывании ISO- образа Windows с настраиваемым набором обоев, то предпочтительным решением является использование WSIM (Windows System Image Manager), который включен в WAIK (пакет автоматической установки Windows) или также известен как WADK (Windows Комплект для оценки и развертывания), таким образом вы можете сгенерировать файл AutoUnattend.xml, который должен поставляться внутри ISO вместе с файлом setup.exe, таким образом вы можете изменять различные значения по умолчанию при установке Windows, такие как обои по умолчанию для всех пользователи.

0

На момент написания этой статьи (по моему опыту) настройка HKCU\Control Panel\Desktop чаще всего не работала бы.

Лучшее решение - вызвать api-функцию win32 SystemParametersInfoSetWallpaper - она работает каждый раз. Я нашел этот модуль / фрагмент PowerShell весьма полезным https://gallery.technet.microsoft.com/scriptcenter/Change-window-borderdesktop-609a6fb2

0

Ниже приведены исправления к тому, что вы предоставили выше, а также некоторые рекомендации. Внизу решение обновить обои без перезагрузки.

Произошла ошибка: «ОШИБКА: файл или каталог не найден». Ошибка при создании кода: Takeown.exe /F "C:\WINDOWS\Web\" /R / DS Исправить: Takeown.exe /F "C:\WINDOWS\Web" /R / DY

Объяснение: /D должно сопровождаться Y для Да или N для Нет. В Takeown есть ошибка, поэтому не допускается использование обратной косой черты, если только за ней не следует токен FileSpec /Wildcard *

Ошибка без ошибок: Администратор должен быть администратором при добавлении разрешений с ICacls, если только вы не создали имя пользователя со строкой «Администратор», но следуйте тому, что ElektroStudios указано выше, и используете текущего пользователя.

Разрешение текущих прав доступа пользователей к системным файлам не очень хорошая идея, потому что вы изменяете безопасность своей системы. Таким образом, ваша первоначальная идея о том, чтобы разрешить администраторам групповые права доступа к этим файлам, является обоснованной.

Ошибка стиля сценариев: Вы не должны удалять файлы обоев, потому что вы едва можете заставить этот сценарий работать. До этого вы должны просто пытаться выполнять задачи через ваш скрипт, не разрушая файлы в операционной системе. Это просто хорошая привычка, когда дело касается сценариев, поэтому вы не портите компьютер и не изменяете его состояние безопасности. Изменяя обои, вы можете пропустить вирус на ваш компьютер, в зависимости от того, откуда вы получаете обои.

Вот как можно заставить скрипт работать. Взято из сценария Роба Вандервуде SetWallp.bat, который приписывает Питу Смиту команду RUNDLL32 для активации изменений. http://www.robvanderwoude.com/sourcecode.php?src=setwallp_nt

Активируйте изменения RUNDLL32.EXE USER32.DLL, UpdatePerUserSystemParameters 1 True

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .