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,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