Я установил пользовательское изображение блокировки экрана в настройках. Это все хорошо, но когда при выходе через Ctrl+Alt+Del экран переходит в режим по умолчанию, к изображению, показанному ниже. Я единственный пользователь на моем ноутбуке и обладаю всеми правами владельца. Как настроить мою картинку на все причины?
1 ответ
Если вы хотите сделать это через реестр. Это ужасная идея, взлом реестра всегда последнее средство, так как он легко ломается. Все, что я могу сказать, это удача; вам нужен ключ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lock Screen
, но формат полностью непрозрачный, и это еще не все: фактические изображения блокировки хранятся в папке C:\ProgramData\Microsoft\Windows\SystemData\{SID}\ReadOnly\LockScreen_B
, который обычно защищен только для SYSTEM.
Вот обходные пути:
Требуется сценарий PS и regedit
Я развернул через скрипт входа в систему (файл bat)
Вот скрипт ps - он делает все настройки для вошедшего в систему пользователя и изменяет экран блокировки:
# Change this to the path where you keep the desired background image
$imagePath = '(Path to Image, include single quotes)'
$newImagePath = [System.IO.Path]::GetDirectoryName($imagePath) + '\' + (New-Guid).Guid + [System.IO.Path]::GetExtension($imagePath)
Copy-Item $imagePath $newImagePath
[Windows.System.UserProfile.LockScreen,Windows.System.UserProfile,ContentType=WindowsRuntime] | Out-Null
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]
Function Await($WinRtTask, $ResultType) {
$asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
$netTask = $asTask.Invoke($null, @($WinRtTask))
$netTask.Wait(-1) | Out-Null
$netTask.Result
}
Function AwaitAction($WinRtAction) {
$asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and !$_.IsGenericMethod })[0]
$netTask = $asTask.Invoke($null, @($WinRtAction))
$netTask.Wait(-1) | Out-Null
}
[Windows.Storage.StorageFile,Windows.Storage,ContentType=WindowsRuntime] | Out-Null
$image = Await ([Windows.Storage.StorageFile]::GetFileFromPathAsync($newImagePath)) ([Windows.Storage.StorageFile])
AwaitAction ([Windows.System.UserProfile.LockScreen]::SetImageFileAsync($image))
Remove-Item $newImagePath
Вот Regedit для изменения экрана входа
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Creative\S-1-0-0]
"RotatingLockScreenEnabled"=dword:00000000
"LockImageFlags"=dword:00000000
"LockScreenOptions"=dword:00000000
"CreativeId"=""
"PortraitAssetPath"="(Path to Image, include double quotes, remember to use \\ in between folders)"
"LandscapeAssetPath"="(Path to Image, include double quotes, remember to use \\ in between folders)"
Вот файл входа в систему bat
CLS
@echo off
regedit /S (insert path to .reg file here)
IF NOT EXIST (Local Path storing image) (
mkdir (Local Path storing image)
xcopy (From path) (Local Path storing image) /R /Y /I
) ELSE ECHO Applying Lock Screen
Powershell.exe -executionpolicy remotesigned -File (Path to ps1 file)
Exit
EXIT