中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 重启“资源管理器"之→VBS版 上一主题 | 下一主题
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『楼 主』:  重启“资源管理器"之→VBS版

应chengbiner要求而发,其实就两句话: 判断是Nt还是9x系统分别用: ntsd -c q -pn Explorer.exe RUNDLL32 SHELL32.DLL,SHExitWindowsEx -1 多用于修改注册表之后及时生效, 为了方便随时操作放在了文件和文件夹右键菜单中。


   此帖被 +2 点积分    点击查看详情   
评分人:【 chengbiner 分数: +2  时间:2008-7-24 03:53


附件 1: Restare_Explorer.rar (2007-3-17 12:42, 5.12 K,下载次数: 69)
附件 2: 1.GIF (2007-3-17 12:42, 5.38 K,下载次数: 3)


2007-3-17 12:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

  第2个命令,我在命令行支持出错了,说是丢失条目“SHExitWindowsEx”,怎么回事?


2007-3-17 13:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 3 楼』:  

Originally posted by lxmxn at 2007-3-17 13:23:   第2个命令,我在命令行支持出错了,说是丢失条目“SHExitWindowsEx”,怎么回事?
第2个命令是用于WinMe的,同样内核估计98也可以用,xp中已取消了, 之所以写此命令是因为Win9x系列不支持第1个命令ntsd (没测试过,应该是吧) [ Last edited by baomaboy on 2007-3-17 at 01:28 PM ]


2007-3-17 13:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  

  哦,原来如此。XP下有没有类似的命令呢?


2007-3-17 13:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 5 楼』:  

没查到过相关的类似命令,下面这个xp下也可以 For Each Process in GetObject("winmgmts:"). _ ExecQuery ("select * from Win32_Process where name='explorer.exe'") Process.terminate(0) Next


2007-3-17 13:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

  嗯,这个VBS的结束进程的不错。下面的命令都可以达到结束explorer.exe进程的效果: 1、Wmic process where "name='explorer.exe'" call terminate 2、Taskkill /f /im explorer.exe 3、Ntsk -c q -pn explorer.exe 4、Stop-Process -name explorer(Windows PowerShell下使用)


2007-3-17 13:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 7 楼』:  

Originally posted by lxmxn at 2007-3-17 13:46:   嗯,这个VBS的结束进程的不错。下面的命令都可以达到结束explorer.exe进程的效果: 1、Wmic process where "name='explorer.exe'" call ...
好多啊,收藏备用了。 兄有遇到过结束后不能重建explorer.exe的情况吗?只留个空桌面,还得手动任务管理器运行,不知是否我的系统不稳定的原因还是其他? 由于不知原因所在所以没有正统的解决方法,只能在代码中加入结束explorer.exe进程3秒后查找explorer.exe进程有则退出,无则重建。 最初的代码没加延时就重建explorer.exe,后来不知是系统稳定了还是其他原因每次都会多开个explorer.exe窗口出来 ^_^ [ Last edited by baomaboy on 2007-3-17 at 02:15 PM ]


2007-3-17 14:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 8 楼』:  

Dim WshSHell,FSO On Error Resume Next Set WshSHell = WScript.CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set WinVer = WshSHell.Environment("Process") Set Args = WScript.Arguments CloseTime = 5 FileName = WScript.ScriptName FileFullName = WScript.ScriptFullName FilePath = FSO.GetParentFolderName(FileFullName) InsPath = FSO.GetSpecialFolder(1) InsFullName = FSO.BuildPath(InsPath ,FileName) LnkPathNT = WshSHell.SpecialFolders(2) LnkPath9X = WshSHell.SpecialFolders(14) LnkPathAll = WshSHell.SpecialFolders("StartMenu") OtherFileName="PathCopyEx.dll" OtherFilePath=FSO.GetSpecialFolder(1) TemFileName = "PathCopyEx.reg" TemFilePath = FSO.GetSpecialFolder(1) Copyright="玲珑科技" QQ="QQ:25926183" Email="Email:fty1995@163.com" InsTitle="重新启动资源管理器" InsAnswer="重新启动资源管理器" RegPath1="HKEY_CLASSES_ROOT\*\shell\Restare_Explorer\" RegValue1="重新启动资源管理器" RegForm1="REG_SZ" RegPath2="HKEY_CLASSES_ROOT\*\shell\Restare_Explorer\command\" RegValue2="wscript.exe "&InsFullName RegForm2="REG_SZ" RegPath3="HKEY_CLASSES_ROOT\Directory\shell\Restare_Explorer\" RegValue3="重新启动资源管理器" RegForm3="REG_SZ" RegPath4="HKEY_CLASSES_ROOT\Directory\shell\Restare_Explorer\command\" RegValue4="wscript.exe "&InsFullName RegForm4="REG_SZ" RegPath9="HKEY_CLASSES_ROOT\Drive\shell\" RegPath10="HKEY_CLASSES_ROOT\Directory\shell\" RegValue13="open" WshSHell.RegWrite RegPath9,RegValue13,RegForm1 WshSHell.RegWrite RegPath10,RegValue13,RegForm1 IF FileFullName <> InsFullName then intAnswer = MsgBox("【是】将“"+ InsAnswer +"”加入到右键菜单,"&Chr(10)&Chr(10)&"【否】将“"+ InsAnswer +"”从右键菜单删除。 ", vbQuestion + vbYesNoCancel, "安装 - "+ InsTitle +" - "+ Copyright) If intAnswer = vbYes Then WshSHell.RegWrite RegPath1,RegValue1,RegForm1 WshSHell.RegWrite RegPath2,RegValue2,RegForm1 WshSHell.RegWrite RegPath3,RegValue3,RegForm3 WshSHell.RegWrite RegPath4,RegValue4,RegForm4 FSO.GetFile(FileFullName).Copy(InsFullName) WshSHell.popup _ "添加脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _ "添加注册表项:"+chr(10)+chr(34)+ RegPath1 +chr(34)+chr(10)+chr(34)+ RegPath3 +chr(34)+chr(10)+ _ chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _ chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _ , CloseTime, "安装成功 - "+ InsTitle +" - "+ Copyright, 0 + 64 end if If intAnswer = vbNo Then WshSHell.RegDelete RegPath4 WshSHell.RegDelete RegPath3 WshSHell.RegDelete RegPath2 WshSHell.RegDelete RegPath1 FSO.DeleteFile InsFullName WshSHell.popup _ "删除脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _ "删除注册表项:"+chr(10)+chr(34)+ RegPath3 +chr(34)+chr(10)+chr(34)+ RegPath1 +chr(34)+chr(10)+ _ chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _ chr(10) & "Copyright(C) " + Copyright +" " & QQ &" " + Email _ , CloseTime, "卸载成功 - "+ InsTitle +" - "+ Copyright, 0 + 64 End If If intAnswer = vbCancel Then end if ELSE If WinVer("OS") <> "Windows_NT" Then WshSHell.Run ("RUNDLL32 SHELL32.DLL,SHExitWindowsEx -1"), vbHide else For Each Process in GetObject("winmgmts:"). _ ExecQuery ("select * from Win32_Process where name='explorer.exe'") Process.terminate(0) Next WScript.Sleep 3000 for each ps in getobject _ ("winmgmts:\\.\root\cimv2:win32_process").instances_ if LCase(ps.name)="explorer.exe" then Set WshSHell = Nothing Set FSO = Nothing Set Args = Nothing WScript.Quit(0) exit for end if next WshSHell.Run ("explorer.exe") end if End IF Set WshSHell = Nothing Set FSO = Nothing Set Args = Nothing WScript.Quit(0)
  [ Last edited by baomaboy on 2008-3-25 at 01:02 AM ]




2007-4-13 14:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
eech
高级用户




积分 906
发帖 346
注册 2006-7-10
状态 离线
『第 9 楼』:  

如果能回到原来的目录,且在桌面空白右键调用就完美了


2008-7-21 17:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kidzgy
中级用户





积分 262
发帖 129
注册 2007-7-11
状态 离线
『第 10 楼』:  

Originally posted by baomaboy at 2007-3-17 02:04 PM: 好多啊,收藏备用了。 兄有遇到过结束后不能重建explorer.exe的情况吗?只留个空桌面,还得手动任务管理器运行,不知是否我的系统不稳定的原因 ...
我也有遇到过,只不过是在BAT下,自我从版主那取得VBS启动explorer后,就不会出现那问题了。 如果bat里那start explorer.exe 确实会存在不稳定因素,应该是CMD本身的问题。 就算我在下面加了很多条start explorer.exe 有些时候也会运行不上。 我想用vbs比较稳定吧。到现在为止,还没有出现过那不稳定的问题哦 重启explorer.exe的代码是: 放在bat里的 只有两行 @taskkill /im explorer.exe /f >nul @mshta VBScript:CreateObject("WScript.Shell").Run("explorer.exe")(window.close)


2008-7-23 22:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chengbiner
初级用户





积分 105
发帖 44
注册 2006-10-5
状态 离线
『第 11 楼』:  

感谢baomaboy兄,好久没有来了,没有想到还能看到我的名字,再次感谢baomaboy兄


2008-7-24 03:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: