为什么此批处理文件无法更改壁纸(Windows 7)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么此批处理文件无法更改壁纸(Windows 7)相关的知识,希望对你有一定的参考价值。

我有一个运行(没有错误)的脚本来更改桌面壁纸。唯一的问题是它不会改变壁纸。注册表项已适当更改,以便位工作。只是重装不起作用。

:: Configure Wallpaper
REG ADD "HKCUControl PanelDesktop" /V Wallpaper /T REG_SZ /F /D "C:UsersgreynoldsAppDataRoamingAPOD Wallpaperapod_wallpaper1.png"
REG ADD "HKCUControl PanelDesktop" /V WallpaperStyle /T REG_SZ /F /D 0
REG ADD "HKCUControl PanelDesktop" /V TileWallpaper /T REG_SZ /F /D 2
:: Make the changes effective immediately
%SystemRoot%System32RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters
答案

UpdatePerUserSystemParameters是一个未记录的函数AFAIK

ReactOS defines it as:BOOL WINAPI UpdatePerUserSystemParameters(DWORD dwReserved,BOOL Enable)

That function definition means that it is not a function you can call with RunDll32(你最终将随机参数传递给函数)

另一答案

在撰写本文时(根据我的经验),更频繁地设置HKCUControl PanelDesktop是行不通的。

最好的解决方案是调用win32 api函数SystemParametersInfoSetWallpaper - 它每次都有效。我发现这个powershell模块/片段是非常有用的https://gallery.technet.microsoft.com/scriptcenter/Change-window-borderdesktop-609a6fb2

另一答案

这里你如何调用这个函数,但更好地使用记录的API:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1 True

以上是关于为什么此批处理文件无法更改壁纸(Windows 7)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Win32/C++ API 更改 Windows 7 壁纸(操作未实现异常)

什么实际处理 Windows 壁纸的绘图?

提示此windows副本不是正版的win7系统7601解决方法

启动win10壁纸保护服务的启动参数是啥

Powershell为当前登录用户更改Windows 10上的壁纸

win8.1 属性-共享:Windows无法显示此连接的属性。WMI信息可能损坏