我试图制作一个简单的脚本,从给定的目录中选择一个随机文件,并将其设置为windows 8上的锁定屏幕图像。不幸的是,它看起来不像windows直接向powershell公开任何东西来触摸锁定屏幕。我首先从Stack overflow开始这个问题,调用-windows-运行时-类-从-powershell看上去和我一样有着相同的最终目标,但是线程并没有深入讨论如何实际设置图像。
通过更多的搜索,我找到了这个链接如何在win8应用程序中使用JS改变锁屏 --它让我从正确的路径开始--我还在msdn上找到了Javascript、C#、C++和VB的示例,说明如何更改锁屏,但我不太清楚如何在Powershell中实现。
选择一个随机图像是很简单的:
$wallpaper = Get-ChildItem $Path2wallpaper
$NewWPimage = $wallpaper[(Get-Random -Maximum ($wallpaper.count))].FullName我所坚持的是如何真正地设置图像。如果我知道如何将$NewWPimage转换为.Net流,那么查看我能找到的所有内容,我认为下面的代码应该能工作吗?
[Windows.System.UserProfile,Windows.System.UserProfile,ContentType=WindowsRuntime]
[Windows.System.UserProfile.LockScreen]::SetImageStreamAsync($img1)如果有人能更好地向我解释如何使用这些.Net对象,或者至少从拥有文件路径(即c:\users\UserName\Wallpapers\newImage.jpg)到将该文件设置为非常棒的锁定屏幕所需的代码。对不起,我的编程术语是非常好的一周,所以如果我使用错误的术语请原谅我。
发布于 2014-12-24 14:31:52
从缺乏响应的角度来看,使用WinRT类肯定很困难。不过,我确实找到了一种使用powershell编程更改windows 8中锁定屏幕的不同方法。
感谢powershell.org上的Will over,我发现在windows 8/8.1中有一个用户级别的锁定屏幕和一个系统级别的锁定屏幕。系统级锁定屏幕图像可以设置在注册表项中,用户级锁定屏幕可以使用注册表项禁用,这使得系统锁定屏幕成为全局锁定屏幕。有关更多细节,请访问eightforums.com。
这是我用来设置随机锁屏的代码。
$wallpaper = Get-ChildItem $Path2wallpaper
$NewWPimage = $wallpaper[(Get-Random -Maximum ($wallpaper.count))].FullName
$RegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization"
if (Test-Path -Path $RegPath)
{
Set-ItemProperty -Path $RegPath -Name LockScreenImage -Value $NewWPimage
}
else
{
New-Item -Path $RegPath -Type Directory
New-ItemProperty -Path $RegPath -Name NoChangingLockScreen -PropertyType DWORD -Value 1
New-ItemProperty -Path $RegPath -Name LockScreenImage -PropertyType String -Value $NewWPimage
}https://stackoverflow.com/questions/27572217
复制相似问题