windows 7 还原默认关联程序

        我想可能大家在操作自己的win7系统的时候,可能遇到这样的问题,就是自己的.exe扩展名的程序,用wps或者word打开之后,系统就会把wps或者word,变成可执行程序的

默认打开方式。这样让你烦不胜烦。而且还改不过来是吧。

      

        本文就旨在解决这个问题。本文的策略是修改注册表。

 

       一般遇到这个问题。可以在运行里键入regedit。进入到注册表编辑器里。HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts在这个注册表项的下面找到对应的扩展名。比如我要找.bak的扩展名,就可以去找HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.bak这个项。一般要还原它的默认打开程序的话,只需要把这个项下面的UserChoice这一子项给删除就可以了。不过如果删除之后重启,并不起效果的话。可以可虑直接把整个.bak的项给删了。要是这样再不起什么效果的话。HKEY_CLASSES_ROOT\.bak可以找到这一项下面的ShellNew下的ItemName这个键修改它的值,自行修改文件的默认打开方式。

        关于这么一个过程,我写了一个vbs脚本来操作这个过程。下面就还以.bak文件为例。图解说明。

1,

  在未修改默认关联程序时.bak文件的图标是这样婶的。

2,

 这个是修改.bak文件的打开方式。

3,

 选择Notepad++

4,

,

看,选择了Notepad++作为打开方式,之后图标都起了变化。

 

      这个时候运行我写的 win7默认程序修改.vbs。

5,
点击确定
6,
可以选择是,也可以选择否。选择是则清空HKCR和HCU下所有有关.bak的项。选择否的话,只是清除HKCU下的UserChoice项以及OpenWithList和OpenWithProgids中除了默认键的所有子键。
7,
点击重启电脑,就可发现.bak的文件就恢复到了最初的状态。要是不选择清空所有打开方式的话,很有可能重启完之后,.bak文件会默认成为记事本文件。不信可以试试。
 
下面为 win7默认程序修改.vbs的相关代码。
const HKCU = &H80000001
const HKCR = &H80000000

dim kzm
dim qkYesOrNo
set ws = createobject("wscript.shell")
set oReg = GetObject("Winmgmts:\root\default:StdRegProv")

kzm = inputbox("请输入扩展名")
kzmReg = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\"&kzm
qkYesOrNo = msgbox("是否清空所有的打开方式?",vbYesNo,"提示")

if qkYesOrNo = 6 then 
    call regSetEmpty()
else
    call regRecovery()
end if

sub regSetEmpty()
    if not kzm = ""  then
	on error resume next
	ws.regDelete("HKCR\"&kzm&"\")
	ws.regDelete("HKCU\"&kzmReg&"\")
	call reStartComputer("已清空打开方式,是否立即重启电脑?")
    end if 
end sub 

'恢复默认打开方式
sub regRecovery()
	if not kzm = ""  then
	    on error resume next
	    oReg.EnumKey HKCU,kzmReg,arrKeyNames
	    if  UBound(arrKeyNames) > 0  then
		For Each keyName In arrKeyNames
			if keyName = "OpenWithList" or keyName = "OpenWithProgids" then
				call regValueDelete(keyName)
			elseif keyName = "UserChoice" then 
				call regKeyDelete(keyName)
			end if
		Next
	     end if
	     call reStartComputer("已恢复默认打开方式,是否立即重启电脑?")
	end if 
end sub 
'删除注册表中的键
sub regValueDelete(keyName)
    on error resume next
    oReg.EnumValues HKCU, kzmReg&"\"&keyName,arrValueNames,arrValueTypes
    for each valueName in arrValueNames
	oReg.DeleteValue HKCU, kzmReg&"\"&keyName, valueName
    next
end sub
'删除注册表中的项
sub regKeyDelete(keyName)
    on error resume next
    oReg.DeleteKey HKCU, kzmReg&"\"&keyName
end sub
'立即重启计算机
sub reStartComputer(message)
	yesOrNo = msgbox(message,vbYesNo,"提示")
	if yesOrNo = 6 then 
		set oReg = nothing
		ws.run "shutdown -f -r -t 0",0
	end if 
end sub 


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值