我想可能大家在操作自己的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 还原默认关联程序
发布评论