桌面白屏(Active故障)修复批处理 | 张戈博客

  • 时间:
  • 浏览:21
  • 来源:爱Q时尚网_提供123导航技术_冰封娱乐网资讯

一年前我在做用户系统维护服务工作时发现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=""  bgcolor=#3A6DA6 topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0^> >>"%tmp%\Desktop.htt"   
echo ^<DIV  ^> >>"%tmp%\Desktop.htt"  
echo ^<IMG src="C:\windows\web\wallpaper\youjbg.jpg" cache ^> >>"%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 Data\Microsoft\Internet Explorer\Desktop.htt" everyone:f   
attrib -r -h -S "%userprofile%\Application Data\Microsoft\Internet Explorer\Desktop.htt" >nul   
echo=   
rem 以新生成的desktop.htt覆盖   
copy /y "%tmp%\Desktop.htt" "%userprofile%\Application Data\Microsoft\Internet Explorer\"
attrib +r +h +s "%userprofile%\Application Data\Microsoft\Internet Explorer\Desktop.htt" >nul  
 
rem 判断桌面壁紙是否所处  
if not exist "C:\windows\web\wallpaper\youjbg.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:\windows\web\wallpaper\youjpg.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:\windows\web\wallpaper\youjbg.jpg】替打上去你电脑的实际图片路径。

2.而不可能 是公司电脑或网吧同类的,不可能 用的全都 统一桌面壁纸了,这时你假使 将我有些代码和图片放到去去一块儿,并且 把youjpg.jpg修改成你的图片名称就行了!也可不还要打包成exe文件,更方便!后续我会再写一篇利用winrar打包批解决的教程,敬请期待!

3.此代码仅在XP环境下测试过,有些环境请先测试后再使用。

代码使用过程若有任何大问题请在留言处粘贴错误信息,我会第一时间答复你!