windows 7 还原默认关联程序

编程知识 更新时间:2023-04-29 23:16:33

        我想可能大家在操作自己的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 


 

更多推荐

windows 7 还原默认关联程序

本文发布于:2023-04-22 05:11:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/b373a380d07429ce21b8c0d914aa28b8.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序   windows

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 94972文章数
  • 24028阅读数
  • 0评论数