윈도우즈 배경화면 / 잠금화면 / 로그인 화면 슬라이드 쇼 설정

하늘 No.283 [컴퓨터] 4562
윈도우즈 배경화면 / 잠금화면 / 로그인 화면 슬라이드 쇼 설정
--------------

별도의 프로그램을 설치하지 않고 윈도우즈의 기본 배경화면 지원을 원한다면 아래의 세팅으로 작업을 진행합니다.
윈도우즈 10의 바탕화면에서 마우스 우클릭하여 개인설정을 선택합니다.
윈도우즈 배경화면_잠금화면_로그인 화면 슬라이드 쇼 설정 Photo-Image

위의 배경화면 파일의 압축을 풀어둔 폴더는 지정하고 배경:슬라이드쇼, 순서섞기:켬, 맞춤선택:채우기 로 세팅합니다.
윈도우즈 배경화면_잠금화면_로그인 화면 슬라이드 쇼 설정 Photo-Image

잠금화면 설정
윈도우즈 배경화면_잠금화면_로그인 화면 슬라이드 쇼 설정 Photo-Image

로그인화면 배경 : 잠금화면 설정에서 배경을 사진으로 바꾼 후 원하는 사진을 지정한다.
이후 다시 슬라이드쇼 로 바꾸어 둔다. (하단에 나열된 첫번째 사진이 로그인시의 배경화면이 된다.)
윈도우즈 배경화면_잠금화면_로그인 화면 슬라이드 쇼 설정 Photo-Image

윈도우즈 배경화면_잠금화면_로그인 화면 슬라이드 쇼 설정 Photo-Image

--------------

현재 배경 화면 찾기 Powershell Script
파일이 많은 폴더를 윈도우즈 슬라이드로 지정해 두면 가끔씩 현재의 이미지 파일명을 알고자 할 때가 있습니다.
이럴 경우 현재의 배경 이미지 파일의 위치와 파일명을 알려 주는 간단한 스크립트 입니다.

간편 사용
findWallpaper.cmd, findWallpaper-kor.ps1 두 개의 파일만이 필요 합니다.
적당한 폴더로 위의 두개 파일을 카피한 후 findWallpaper.cmd를 더블클릭하여 실행합니다. (findWallpaper.cmd 내 findWallpaper-kor.ps1 파일 위치 지정)
findWallpaper-kor.ps1 파일이 같은 폴더내에 있어야 합니다.
(파일탐색기의 버그로 인해 최초 실행에서 파일선택이 안 됩니다. 파일선택외 다른 기능이나 두번째 이후 실행에서는 문제 없슴)


탐색기에서 아래 주소는 현재 윈도우즈 배경화면 캐쉬 이미지 위치 입니다. 윈본은 위의 프로그램으로 알 수 있고 아래 폴더는 캐쉬 (임시 복사) 된 이미지 입니다.
%appdata%\Microsoft\Windows\Themes\CachedFiles

윈도우즈 배경화면_잠금화면_로그인 화면 슬라이드 쇼 설정 Photo-Image

findWallpaper-kor.ps1

# Find Current Wall Paper file
# 현재 배경화면의 파일 찾기
# - Modified by Heisme
# v 1.1
#
Try
{
# Get script name
$ScriptName=(Get-Item $PSCommandPath).Name

# Load Windows Forms and initialize visual styles
# This action is not needed for Windows 8.x
# But a user might run this script on previous versions, just because
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.Application]::EnableVisualStyles()

# Check Windows verison
$vers=[System.Environment]::OSVersion.Version
If (!(($vers.Major -eq 10) -or (($vers.Major -eq 6) -and ($vers.Minor -ge 2)))) {
$result=[System.Windows.Forms.MessageBox]::Show("This operating system is not supported. This script only supports Windows NT 6.2, 6.3 or 10.x. (i.e. Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2 or Windows 10). You seem to be running:`r`r"+[System.Environment]::OSVersion.VersionString, "Script", "OK", "Error");
break;
}

# Initialize counters
$Path_Start_Delta=24  #The offset at which the image path starts
$Path_End_Delta=-1    #The offset at which the image path ends... is still unknown

# First, access Windows Registry and get the property containing wallpaper path
try {
$TranscodedImageCache=(Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache
}
catch [System.Management.Automation.ItemNotFoundException],[System.Management.Automation.PSArgumentException]  {
$result=[System.Windows.Forms.MessageBox]::Show("Windows does not seem to be holding a record of a wallpaper at this time.`r`r"+$Error[0].Exception.Message,"Script","OK","Error");
break;
}

# Decode the property containing the path
# First, let's assume the path ends at the last byte of $TranscodedImageCache
$Path_End_Delta=$TranscodedImageCache.length-1

# A sequence of 0x00 0x00 marks the end of string. Find it.
# The array that we are searching contains a UTF-16 string. Each character is a little-endian WORD,
# so we can search the array's even indexes only.
for ($i = $Path_Start_Delta; $i -lt ($TranscodedImageCache.length); $i += 2) {
if ($TranscodedImageCache[($i+2)..($i+3)] -eq 0) {
$Path_End_Delta=$i + 1;
Break;
}
}

# Convert the bytes holding the wallpaper path to a Unicode string
$UnicodeObject=New-Object System.Text.UnicodeEncoding
$WallpaperSource=$UnicodeObject.GetString($TranscodedImageCache[$Path_Start_Delta..$Path_End_Delta]);

# Test item's existence
try {
Get-Item $WallpaperSource -Force -ErrorAction Stop | Out-Null
}
catch [System.Management.Automation.ItemNotFoundException] {
$result=[System.Windows.Forms.MessageBox]::Show("Wallpaper is not found at the location Windows believes it is: `r$WallpaperSource", "Script", "OK", "Warning");
break;
}

# Wallpaper should by now have been found.
# Present it to the user. If he so chooses, launch Explorer to take him were wallpaper is.
$bgFilenameFolder = [System.IO.Path]::GetDirectoryName($WallpaperSource);
$bgFilename = [System.IO.Path]::GetFileName($WallpaperSource);
# copy Filename Only
#Set-Clipboard -Value "$bgFilename";
# copy FullPath Filename
Set-Clipboard -Value "$WallpaperSource";

# $result=[System.Windows.Forms.MessageBox]::Show("윈도우즈 배경 이미지 위치: `rFolder: $bgFilenameFolder` `rFile: $bgFilename` `r$WallpaperSource`r`r파일탐색기를 실행할까요?", "Find Current Wallpaper", "YesNo", "Asterisk");
$result=[System.Windows.Forms.MessageBox]::Show("배경 이미지 위치: `r$bgFilenameFolder`r$bgFilename `r`r클립 보드에 파일 위치가 복사되었습니다.`r`r파일 탐색기를 실행할까요?", "현재 배경 이미지 찾기", "YesNo", "Asterisk");
if ($result -eq "Yes")
{
Start-Process explorer.exe -ArgumentList "/select,`"$WallpaperSource`""
}
}
Catch
{
$result=[System.Windows.Forms.MessageBox]::Show("Error!`r`r"+$Error[0], "Script", "OK", "Error");
break;
}

https://SkyMoon.info/a/HeismeNote/283  

Love what you do, Do what you love [Ray Bradbury]