桌面白屏(Active故障)修复批处理
一年前我在做用户系统维护服务工作时发现 AD 域环境下,AD 用户桌面经常会出现壁纸无法显示,ActiveDesktop 桌面损坏之类的故障,当时从前人心得里学到的方法就是登入管理员,然后删除用户配置目录(%userprofile%),然后重新登入之后用户桌面就能正常了
如此确实能修复这白屏故障桌面,但是用户的所有事设置均被重置,加大了维护工作量,这不是做维护愿意看到的,于是左查右查,我终于找到了症结所在!
原来,加入 AD 后,域用户的桌面都是网域服务器来配置的,而 Active 桌面就是从网域获取的一个叫做 Desktop.htt 的配置文件来控制的,每次用户环境的刷新,都会从 AD 服务器重新获取新的配置文件,当出现故障的时候(没深究,大概就是网域通讯之类的故障),Desktop.htt 文件内容将会改变,都是无法连接之类的描述,从而造成了 Active 桌面故障,一片惨白! 于是,最开始就有了手动解决的办法,从正常用户环境得到正常的文件,将里面的分辨率修改成目标电脑分辨率并拷贝这个文件去覆盖损坏的 desktop.htt,然后立刻设置为只读属性(否则一刷新就被损坏文件重新覆盖,从网域抓取失败时,生成的错误文件)。
问题到这里,至少有了解决办法,但是还是挺麻烦,还是不是作为超级懒人的我所要的答案,于是我就动手写个批处理好了,于是就有了下面这个代码:
@echo off
color 2f
mode con cols=39 lines=8
title ※白屏修复工具※ Ver 2.2 By Mars.Ge
rem 获取屏幕分辨率,以便重写desktop.htt.
echo Set oIE = CreateObject("htmlfile"):With oIE.parentWindow.screen:wsh.echo .width,"*",.height:End With>"%TMP%vbs.tmp"
for /f "delims=* tokens=1,2" %%i in ('cscript.exe //e:vbscript //nologo %TMP%vbs.tmp') do (
if /i "%%i" gtr "0" set X=%%i & Set Y=%%j
)
rem 生成Desktop.htt文件
echo ^<HTML^> >"%tmp%Desktop.htt"
echo ^<BODY background="" style="border:none;" bgcolor=#3A6DA6 topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0^> >>"%tmp%Desktop.htt"
echo ^<DIV style="position:absolute; LEFT: 0; TOP: 0; WIDTH:%x%; HEIGHT:%Y%;"^> >>"%tmp%Desktop.htt"
echo ^<IMG src="C:windowswebwallpaperyoujbg.jpg" cache style="position: absolute; left:0; top:0; width: 100%%; height: 100%%;"^> >>"%tmp%Desktop.htt"
echo ^</DIV^> >>"%tmp%Desktop.htt"
echo ^</BODY^> >>"%tmp%Desktop.htt"
echo ^</HTML^> >>"%tmp%Desktop.htt"
rem 对已损坏的desktop.htt去属性处理
echo y|cacls /t /c /g "%userprofile%Application DataMicrosoftInternet ExplorerDesktop.htt" everyone:f
attrib -r -h -S "%userprofile%Application DataMicrosoftInternet ExplorerDesktop.htt" >nul
echo=
rem 以新生成的desktop.htt覆盖
copy /y "%tmp%Desktop.htt" "%userprofile%Application DataMicrosoftInternet Explorer"
attrib +r +h +s "%userprofile%Application DataMicrosoftInternet ExplorerDesktop.htt" >nul
rem 判断桌面壁紙是否存在
if not exist "C:windowswebwallpaperyoujbg.jpg" ( goto Repair2 ) else (
Rundll32.exe USER32.DLL,UpdatePerUserSystemParameters
Rundll32.exe USER32.DLL,UpdatePerUserSystemParameters
echo=
echo 桌面白屏故障修复成功!
echo=
echo 任意键退出...
pause>NUL
exit
)
:Repair2
title ※修复桌面故障[桌面及壁紙]※
echo=
copy /y youjpg.jpg C:windowswebwallpaperyoujpg.jpg 1>nul 2>NUL
Rundll32.exe USER32.DLL,UpdatePerUserSystemParameters
Rundll32.exe USER32.DLL,UpdatePerUserSystemParameters
echo 桌面白屏及壁紙故障修复成功!
echo=
echo 任意键退出...
pause>nul
goto exit
简单说明:代码先获取屏幕分辨率,然后重新生成一个正常格式的 desktop.htt 文件,然后替换损坏文件并设置只读权限即可完成修复。
注意事项: 1.由于这个 desktop.htt 文件是设置了壁纸路径的,所以如果你要使用,请将代码中的【C:windowswebwallpaperyoujbg.jpg】替换成你电脑的实际图片路径。
2.而如果是公司电脑或网吧之类的,可能用的就是统一桌面壁纸了,这时你只要将我这个代码和图片放到一起,然后把 youjpg.jpg 修改成你的图片名称就行了!也可以打包成 exe 文件,更方便!后续我会再写一篇利用 winrar 打包批处理的教程,敬请期待!
3.此代码仅在 XP 环境下测试过,其他环境请先测试后再使用。
代码使用过程若有任何问题请在留言处粘贴错误信息,我会第一时间答复你!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- django序列化时使用外键的真实值操作
- 网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
- 如何基于Python爬取隐秘的角落评论
- PHP微信网页授权的配置文件操作分析
- php微信公众号开发之关键词回复
- Python 抓取数据存储到Redis中的操作
- PHP常见字符串操作函数与用法总结
- 利用python对excel中一列的时间数据更改格式操作
- Python 私有属性和私有方法应用场景分析
- django 模型字段设置默认值代码
- Python局部变量与全局变量区别原理解析
- 为什么是 Python -m
- Python csv文件记录流程代码解析
- 简单的Python人脸识别系统
- PHP实现的微信公众号扫码模拟登录功能示例