1: #RequireAdmin
2: #NoTrayIcon
3: ;已知缺陷:程序未在启动时检测是否已注册过右键菜单
4: #include <GuiConstants.au3>
5: #include <file.au3>
6: Dim $szDrive, $szDir, $szFName, $szExt
7: Opt("GUIOnEventMode", 1)
8: GuiCreate("Unlocker辅助", 390, 120,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
9: GUISetOnEvent($GUI_EVENT_CLOSE, "CloseClicked")
10: $CheckboxShell = GuiCtrlCreateCheckbox("注册右键菜单", 150, 40, 130, 20)
11: GUICtrlSetOnEvent($CheckboxShell, "OnCheckboxShell")
12: $Button_3 = GuiCtrlCreateButton("解锁文件...", 80, 80, 80, 30)
13: GUICtrlSetOnEvent($Button_3,"OnBrowserFile")
14: $Button_5 = GuiCtrlCreateButton("绿色退出", 260, 80, 80, 30)
15: GUICtrlSetOnEvent($Button_5,"ExitClicked")
16: $Label_6 = GuiCtrlCreateLabel("Unlocker 绿色辅助扩展。可使用右键菜单,或者直接浏览目标文件。", 10, 10, 370, 20)
17: GuiSetState()
18: While 1
19: Sleep(1000)
20: WEnd
21: ;使用浏览对话框直接选择文件进行解锁处理
22: Func OnBrowserFile()
23: $var = FileOpenDialog("选择文件",@WorkingDir,"All (*.*)")
24: _PathSplit($var, $szDrive, $szDir, $szFName, $szExt)
25: RunWait('"' & @ScriptDir & '\unlocker.exe" ' & $var,$szDrive & $szDir)
26: EndFunc
27: ;按X退出时如果右键菜单存在,会予以保留
28: Func CloseClicked()
29: Exit
30: EndFunc
31: ;按绿色退出时,如果已注册右键菜单,则清除
32: Func ExitClicked()
33: If GUICtrlRead($CheckboxShell) == $GUI_CHECKED Then
34: RegDelete("HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\UnlockerShellExtension")
35: RegDelete("HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\UnlockerShellExtension")
36: RegDelete("HKEY_CLASSES_ROOT\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
37: RegDelete("HKEY_CLASSES_ROOT\CLSID\UnlockerShellExtension")
38: RegDelete("HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\UnlockerShellExtension")
39: RegDelete("HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\UnlockerShellExtension")
40: RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Unlocker.exe")
41: RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
42: RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Unlocker")
43: EndIf
44: Exit
45: EndFunc
46: ;按勾选框的状态确定是否注册右unlocker右键菜单
47: Func OnCheckboxShell()
< pre style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;margin:0;padding:0;"> 48: If GUICtrlRead($CheckboxShell) == $GUI_CHECKED Then
49: RegWrite("HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\UnlockerShellExtension","","REG_SZ","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
50: RegWrite("HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\UnlockerShellExtension","","REG_SZ","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
51: RegWrite("HKEY_CLASSES_ROOT\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32","","REG_SZ",@ScriptDir & "\UnlockerCOM.dll")
52: RegWrite("HKEY_CLASSES_ROOT\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}\InProcServer32","ThreadingModel","REG_SZ","Apartment")
53: RegWrite("HKEY_CLASSES_ROOT\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}","","REG_SZ","UnlockerShellExtension")
54: RegWrite("HKEY_CLASSES_ROOT\CLSID\UnlockerShellExtension","","REG_SZ","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
55: RegWrite("HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\UnlockerShellExtension","","REG_SZ","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
56: RegWrite("HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\UnlockerShellExtension","","REG_SZ","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
57: RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Unlocker.exe","","REG_SZ",@ScriptDir & "\Unlocker.exe")
58: RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}","REG_SZ","UnlockerShellExtension")
59: RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Unlocker","Language","REG_SZ","2052")
60:
61: Else
62:
63: RegDelete("HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\UnlockerShellExtension")
64: RegDelete("HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\UnlockerShellExtension")
65: RegDelete("HKEY_CLASSES_ROOT\CLSID\{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
66: RegDelete("HKEY_CLASSES_ROOT\CLSID\UnlockerShellExtension")
67: RegDelete("HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\UnlockerShellExtension")
68: RegDelete("HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\UnlockerShellExtension")
69: RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Unlocker.exe")
70: RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved","{DDE4BEEB-DDE6-48fd-8EB5-035C09923F83}")
71: RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Unlocker")
72: EndIf
73:
74: EndFunc