commit 4d51544833972f6c55c7997678ad614f376d3388 Author: vec2vec2 Date: Sun Sep 20 04:10:45 2026 +0800 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..dd70ac3 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# EasyFile v1.4 by [vec2](https://www.vec2.space) + +## 使用方法? + +**安装**:双击 `install.bat` + +--- + +### 文件夹右键菜单 +- `Copy Path /`(正斜杠路径) +- `EasyFile` 子菜单: + - `Copy Path \`(反斜杠) + - `Copy Path \\`(双反斜杠) + - `dir`(复制目录树,给智障AI看) +- `PathAdd` – 添加当前文件夹到系统 Path +- `PathDel` – 删除 +- `PathSee` – 查看全部Path +- `Opencmd` – 以这个文件夹作为工作目录打开cmd + +### 文件夹背景右键菜单 +- `Opencmd` – 以这个文件夹作为工作目录打开cmd +- `dir`(复制目录树,给智障AI看) + +### 自己添加右击菜单?对 .exe/.bat 右键 +- `RegisterAdd` – 输入扩展名,关联此程序打开 +- `RegisterDel` – 取消关联的所有扩展名(谨慎) + +### 自己改源码 + 可以自己改那些在src里的cpp然后编译并且放到bin文件夹里,--你不会连cpp都不会编译吧-- + +--- + +### CMD 快速命令 +- `kc` – 杀死所有控制台 +- `kn` – 杀死所有记事本 +- ` pl "url" ` – 下载url的内容到dowload里 + +## change log +- 添加Tools\FuckYouWindowsAutoUpdate.bat Tools\W11ClassicMenu Tools\Wub +- 改拷贝bin到 %SystemRoot%\System32\EasyFile +- 添加putty到bin里 +- 添加cb自动转换cmd和bat指令 +- 添加pl(powerdownload) +- 添加NSudo8.0到bin里 +- 引入某个大佬写的便捷工具 +- clearshit添加最新QQ +- 添加clearshit清除各种垃圾软件在资源管理器右键菜单里拉的大便 +- fix 空格路径拷贝失败 +- init \ No newline at end of file diff --git a/Tools/Del.bat b/Tools/Del.bat new file mode 100644 index 0000000..26ebd6f --- /dev/null +++ b/Tools/Del.bat @@ -0,0 +1 @@ +del "%~1" \ No newline at end of file diff --git a/Tools/EMacro_clang.bat b/Tools/EMacro_clang.bat new file mode 100644 index 0000000..808bbfa --- /dev/null +++ b/Tools/EMacro_clang.bat @@ -0,0 +1 @@ +clang -E -x c++ -P -Wno-error=invalid-token-paste "%~1" > "%~dpn1.pp" 2> "%~dpn1_log.pp" \ No newline at end of file diff --git a/Tools/EMacro_gcc.bat b/Tools/EMacro_gcc.bat new file mode 100644 index 0000000..808bbfa --- /dev/null +++ b/Tools/EMacro_gcc.bat @@ -0,0 +1 @@ +clang -E -x c++ -P -Wno-error=invalid-token-paste "%~1" > "%~dpn1.pp" 2> "%~dpn1_log.pp" \ No newline at end of file diff --git a/Tools/EMacro_mscv.bat b/Tools/EMacro_mscv.bat new file mode 100644 index 0000000..f3be5fd --- /dev/null +++ b/Tools/EMacro_mscv.bat @@ -0,0 +1 @@ +gcc -E -x c++ -P "%~1" > "%~dpn1.pp" 2> "%~dpn1_log.pp" \ No newline at end of file diff --git a/Tools/EMarcoCopy_gcc.bat b/Tools/EMarcoCopy_gcc.bat new file mode 100644 index 0000000..e69de29 diff --git a/Tools/FuckYouDouBaoWork.bat b/Tools/FuckYouDouBaoWork.bat new file mode 100644 index 0000000..3b4038e --- /dev/null +++ b/Tools/FuckYouDouBaoWork.bat @@ -0,0 +1 @@ +taskkill /F /IM DoubaoWork.exe /T diff --git a/Tools/FuckYouPixPin.bat b/Tools/FuckYouPixPin.bat new file mode 100644 index 0000000..93bad7b --- /dev/null +++ b/Tools/FuckYouPixPin.bat @@ -0,0 +1,5 @@ +net session >nul 2>&1 || (powershell start-process '%~f0' -verb runas & exit /b) +:loop +taskkill /F /IM PixPin.exe +timeout /T 1 /NOBREAK +goto loop \ No newline at end of file diff --git a/Tools/FuckYouShits.bat b/Tools/FuckYouShits.bat new file mode 100644 index 0000000..00a5534 --- /dev/null +++ b/Tools/FuckYouShits.bat @@ -0,0 +1,20 @@ +net session >nul 2>&1 || (powershell start-process '%~f0' -verb runas & exit /b) +:loop +taskkill /F /IM ToDesk.exe +taskkill /F /IM AweSun.exe +taskkill /F /IM AicWifiService.exe +taskkill /F /IM LCore.exe +taskkill /F /IM ms-teams.exe +taskkill /F /IM RadeonSoftware.exe +taskkill /F /IM "NVIDIA App.exe" +taskkill /F /IM "NVIDIA Overlay.exe" +taskkill /F /IM "NVDisplay.Container.exe" +taskkill /F /IM "nvcontainer.exe" +taskkill /F /IM "nvsphelper64.exe" +taskkill /F /IM "FvContainer.System.exe" +taskkill /F /IM "FvContainer.exe" +taskkill /F /IM "nvrla.exe" +taskkill /F /IM "nvfvsdksvc_x64.exe" +taskkill /F /IM "NvOAWrapperCache.exe" +timeout /T 1 /NOBREAK +goto loop \ No newline at end of file diff --git a/Tools/FuckYouWin11RightClick.bat b/Tools/FuckYouWin11RightClick.bat new file mode 100644 index 0000000..646cd33 --- /dev/null +++ b/Tools/FuckYouWin11RightClick.bat @@ -0,0 +1,5 @@ +reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f +reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve +reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f >nul 2>&1 +reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve /d "" +regedit /s "%~dp0FuckYouWin11RightCl.reg" diff --git a/Tools/FuckYouWin11RightClick.reg b/Tools/FuckYouWin11RightClick.reg new file mode 100644 index 0000000..5bb7a23 --- /dev/null +++ b/Tools/FuckYouWin11RightClick.reg @@ -0,0 +1,5 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32] +@="" +[-HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}] \ No newline at end of file diff --git a/Tools/FuckYouWin11RightClick_rs_explorer.bat b/Tools/FuckYouWin11RightClick_rs_explorer.bat new file mode 100644 index 0000000..99ebecd --- /dev/null +++ b/Tools/FuckYouWin11RightClick_rs_explorer.bat @@ -0,0 +1 @@ +taskkill /f /im explorer.exe & start explorer.exe \ No newline at end of file diff --git a/Tools/FuckYouWindowsAutoUpdate.bat b/Tools/FuckYouWindowsAutoUpdate.bat new file mode 100644 index 0000000..18cfdfe --- /dev/null +++ b/Tools/FuckYouWindowsAutoUpdate.bat @@ -0,0 +1,28 @@ +net session >nul 2>&1 || (powershell start-process '%~f0' -verb runas & exit /b) +whoami /groups | find "TrustedInstaller" >nul || (NSudoLC -U:T -P:E cmd /c "%~f0" & exit /b) + +schtasks /delete /tn "\Microsoft\Windows\WindowsUpdate\RUXIM\PLUGScheduler" /f + +echo \Registry\Machine\SYSTEM\CurrentControlSet\Services\wuauserv [1 5] > "%temp%\fk.ini" & echo \Registry\Machine\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc [1 5] >> "%temp%\fk.ini" & regini "%temp%\fk.ini" & reg delete "HKLM\SYSTEM\CurrentControlSet\Services\wuauserv" /v FailureActions /f & reg delete "HKLM\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc" /v FailureActions /f & del "%temp%\fk.ini" + +reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f +reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v SetDisableUXWUAccess /t REG_DWORD /d 1 /f +reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AutoInstallMinorUpdates /t REG_DWORD /d 0 /f + +reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f + +rd /s /q "%SystemRoot%\System32\Tasks\Microsoft\Windows\WindowsUpdate" +reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\WindowsUpdate" /f + +taskkill /f /im UsoClient.exe +taskkill /f /im WaaSMedicAgent.exe +taskkill /f /im SIHClient.exe +taskkill /f /im wuauclt.exe +taskkill /f /im usocoreworker.exe +ren "C:\Windows\System32\UsoClient.exe" UsoClient.exe.bak +ren "C:\Windows\System32\WaaSMedicAgent.exe" WaaSMedicAgent.exe.bak +ren "C:\Windows\System32\SIHClient.exe" SIHClient.exe.bak +ren "C:\Windows\System32\wuauclt.exe" wuauclt.exe.bak +ren "C:\Windows\System32\usocoreworker.exe" usocoreworker.exe.bak + +gpupdate /force \ No newline at end of file diff --git a/Tools/W11ClassicMenu/VersionInfo.txt b/Tools/W11ClassicMenu/VersionInfo.txt new file mode 100644 index 0000000..c6d877a --- /dev/null +++ b/Tools/W11ClassicMenu/VersionInfo.txt @@ -0,0 +1,31 @@ +Author: BlueLife , Velociraptor +www.sordum.org + +############--Windows 11 Classic Context Menu v1.2 --############ +(Thursday, 27 July 2023) + +1. [ Removed ] - Move the Taskbar to the Top (Under menu) option +2. [ Added ] - Coding improvements have been made + +############--Windows 11 Classic Context Menu v1.1 --############ +(Thursday, 11 November 2021) + +Changelog: + +1. [ Added ] - All user support (Choose Menu - Apply to all users) +2. [ Added ] - Language support +3. [ Added ] - Move the Taskbar to the Top (Under menu) +4. [ Added ] - Some code improvements + +--------------------------------------------------------------- + +############--Windows 11 Classic Context Menu v1.0--############ +(Friday, 8 October 2021) + +Windows 11 Classic Context Menu help users to toggle between Classic (Old) Context menu +and default (new) Windows 11 Right click menu easily. + + + + + diff --git a/Tools/W11ClassicMenu/W11ClassicMenu.exe b/Tools/W11ClassicMenu/W11ClassicMenu.exe new file mode 100644 index 0000000..669fe06 Binary files /dev/null and b/Tools/W11ClassicMenu/W11ClassicMenu.exe differ diff --git a/Tools/W11ClassicMenu/W11ClassicMenu.ini b/Tools/W11ClassicMenu/W11ClassicMenu.ini new file mode 100644 index 0000000..6b098be Binary files /dev/null and b/Tools/W11ClassicMenu/W11ClassicMenu.ini differ diff --git a/Tools/Wub/VersionInfo.txt b/Tools/Wub/VersionInfo.txt new file mode 100644 index 0000000..8fe29a9 --- /dev/null +++ b/Tools/Wub/VersionInfo.txt @@ -0,0 +1,70 @@ +Produced by : BlueLife velociraptor +www.sordum.org + +########## Windows Update Blocker v1.8 ################## +Release date: Friday, 9 June 2023 + +1. [FIXED] - Windows update service not found! error. (Auto recreate it) +2. [FIXED] - Sometimes,the update service fails to start +3. [ ADDED ] - /R parameter to repair errors in the Update service. +4. [ ADDED ] - Setting to close specified processes from ini file during the process +5. [ ADDED ] - Windows update troubleshooter shortcut (under the Menu) +6. [ ADDED ] - New methods to prevent overcoming the block of the Windows update service +7. [ ADDED ] - Many updates in coding + + +########## Windows Update Blocker v1.7 ################## +Release date: Friday, 28 January 2022 + +1. [FIXED] - Only 25 services can be restricted from the ini file +2. [ ADDED ] - The Task Scheduler section has been rewritten. (determined from ini file) +3. [ ADDED ] - Option to block Process (application) from ini file +4. [ ADDED ] - Some code Improvements + + +########## Windows Update Blocker v1.6 ################## +Release date: October 19, 2020 Monday + +1. [FIXED] - GUI Font and icons are too small +2. [ ADDED ] - Manual option for wuauserv in windows update enable process +3. [ ADDED ] - x64 bit version +4. [ ADDED ] - Some code Improvements + +########## Windows Update Blocker v1.5 ################## +Release date: September 3, 2019 + +1. [ FIXED ] - There is a Windows Update Status Icon in Windows 10 Taskbar Notification Area +2. [ ADDED ] - 250 ms wait time added to check tasks properly.If there is a problem Update blocking process will be repeated +3. [ ADDED ] - Some code improvements + +########## Windows Update Blocker v1.4 ################## +Release date: August 21, 2019 + +1. [ FIXED ] - Windows Update Blocker doesn't disable Update Orchestrator and WaaSMedic task schedules + +########## Windows Update Blocker v1.3 ################## +Release date: June 20, 2019 + +1. [ FIXED ] - Update and Security tab is crashing +2. [ ADDED ] - Windows Update scheduled Task has been disabled in Task Scheduler + +########## Windows Update Blocker v1.2 ################## +Release date: April 21, 2019 + +1. [ ADDED ] - GUI option for services which added to Ini +2. [ FIXED ] - Some Parts of the software recoded (Improved) + +########## Windows Update Blocker v1.1 ################## +Release date: May 06, 2018 + +1. [ ADDED ] - Language support +2. [ ADDED ] - An option to add different services from Ini file. DoSvc sevice attached +3. [ FIXED ] - Some minor BUGS + +########## Windows Update Blocker v1.0 ################## +Release date: December 6, 2016 + +Windows Update Blocker is a freeware that helps you to completely disable or enable Automatic Updates on +your Windows system , with just a click of the button + + diff --git a/Tools/Wub/Wub.exe b/Tools/Wub/Wub.exe new file mode 100644 index 0000000..18a5d44 Binary files /dev/null and b/Tools/Wub/Wub.exe differ diff --git a/Tools/Wub/Wub.ini b/Tools/Wub/Wub.ini new file mode 100644 index 0000000..92069f9 Binary files /dev/null and b/Tools/Wub/Wub.ini differ diff --git a/Tools/Wub/Wub_x64.exe b/Tools/Wub/Wub_x64.exe new file mode 100644 index 0000000..e3961ae Binary files /dev/null and b/Tools/Wub/Wub_x64.exe differ diff --git a/Uninstall.bat b/Uninstall.bat new file mode 100644 index 0000000..06f4d94 --- /dev/null +++ b/Uninstall.bat @@ -0,0 +1,10 @@ +fltmc >nul 2>&1 || (powershell -Command "Start-Process '%~f0' -Verb RunAs" & exit /b) +RegisterDel PathAdd.exe +RegisterDel PathDel.exe +RegisterDel PathSee.exe +PathDel ./bin +for %%f in ("%~dp0bin\*.*") do @del /f /q "%SystemRoot%\System32\%%~nxf" +regedit /s "%~dp0src\UnEasyFile.reg" +regedit /s "%~dp0src\UnFastRegister.reg" +regedit /s "%~dp0src\QuickSettings\DelQuickSettings.reg" + diff --git a/bin/NSudoLC.exe b/bin/NSudoLC.exe new file mode 100644 index 0000000..ba3756a Binary files /dev/null and b/bin/NSudoLC.exe differ diff --git a/bin/NSudoLG.exe b/bin/NSudoLG.exe new file mode 100644 index 0000000..e84d140 Binary files /dev/null and b/bin/NSudoLG.exe differ diff --git a/bin/PathAdd.exe b/bin/PathAdd.exe new file mode 100644 index 0000000..e02c0ea Binary files /dev/null and b/bin/PathAdd.exe differ diff --git a/bin/PathDel.exe b/bin/PathDel.exe new file mode 100644 index 0000000..35639ac Binary files /dev/null and b/bin/PathDel.exe differ diff --git a/bin/PathSee.exe b/bin/PathSee.exe new file mode 100644 index 0000000..56b7916 Binary files /dev/null and b/bin/PathSee.exe differ diff --git a/bin/RegisterAdd.exe b/bin/RegisterAdd.exe new file mode 100644 index 0000000..7a695f1 Binary files /dev/null and b/bin/RegisterAdd.exe differ diff --git a/bin/RegisterDel.exe b/bin/RegisterDel.exe new file mode 100644 index 0000000..7a19f5a Binary files /dev/null and b/bin/RegisterDel.exe differ diff --git a/bin/cb.exe b/bin/cb.exe new file mode 100644 index 0000000..41910d8 Binary files /dev/null and b/bin/cb.exe differ diff --git a/bin/clipex.exe b/bin/clipex.exe new file mode 100644 index 0000000..98c8a70 Binary files /dev/null and b/bin/clipex.exe differ diff --git a/bin/handle.exe b/bin/handle.exe new file mode 100644 index 0000000..39dc6ea Binary files /dev/null and b/bin/handle.exe differ diff --git a/bin/handle64.exe b/bin/handle64.exe new file mode 100644 index 0000000..c822dc9 Binary files /dev/null and b/bin/handle64.exe differ diff --git a/bin/handle64a.exe b/bin/handle64a.exe new file mode 100644 index 0000000..661e24c Binary files /dev/null and b/bin/handle64a.exe differ diff --git a/bin/kc.bat b/bin/kc.bat new file mode 100644 index 0000000..bea7eb8 --- /dev/null +++ b/bin/kc.bat @@ -0,0 +1 @@ +taskkill /im cmd.exe /f \ No newline at end of file diff --git a/bin/kn.bat b/bin/kn.bat new file mode 100644 index 0000000..aec3116 --- /dev/null +++ b/bin/kn.bat @@ -0,0 +1 @@ +taskkill /im notepad.exe /f \ No newline at end of file diff --git a/bin/pageant.exe b/bin/pageant.exe new file mode 100644 index 0000000..7a896e0 Binary files /dev/null and b/bin/pageant.exe differ diff --git a/bin/pl.exe b/bin/pl.exe new file mode 100644 index 0000000..bdef6e5 Binary files /dev/null and b/bin/pl.exe differ diff --git a/bin/plink.exe b/bin/plink.exe new file mode 100644 index 0000000..ab48aca Binary files /dev/null and b/bin/plink.exe differ diff --git a/bin/pscp.exe b/bin/pscp.exe new file mode 100644 index 0000000..b8832e8 Binary files /dev/null and b/bin/pscp.exe differ diff --git a/bin/psftp.exe b/bin/psftp.exe new file mode 100644 index 0000000..f15d79e Binary files /dev/null and b/bin/psftp.exe differ diff --git a/bin/putty.chm b/bin/putty.chm new file mode 100644 index 0000000..3971369 Binary files /dev/null and b/bin/putty.chm differ diff --git a/bin/putty.exe b/bin/putty.exe new file mode 100644 index 0000000..0bff84c Binary files /dev/null and b/bin/putty.exe differ diff --git a/bin/puttygen.exe b/bin/puttygen.exe new file mode 100644 index 0000000..bfa937f Binary files /dev/null and b/bin/puttygen.exe differ diff --git a/clearshit.bat b/clearshit.bat new file mode 100644 index 0000000..57e601d --- /dev/null +++ b/clearshit.bat @@ -0,0 +1,13 @@ +del /f /q /a "D:\Programs\BaiduNetdisk\YunOfficeAddin.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\YunOfficeAddin64.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\YunShellExt.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\YunShellExt64.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\YunShellExtV1.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\YunShellExtV164.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\ShellFolder.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\ShellFolder64.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\ShellFolderDepend.dll" +del /f /q /a "D:\Programs\BaiduNetdisk\ShellFolderDepend64.dll" +del /f /q "%windir%\System32\QQShellExt.dll" "%windir%\System32\QQShellExt64.dll" 2>nul +del /f /q "%windir%\SysWOW64\QQShellExt.dll" "%windir%\SysWOW64\QQShellExt64.dll" 2>nul +@regedit /s "%~dp0src\CLEAR.reg" \ No newline at end of file diff --git a/install.bat b/install.bat new file mode 100644 index 0000000..bb3ec4c --- /dev/null +++ b/install.bat @@ -0,0 +1,11 @@ +fltmc >nul 2>&1 || (powershell -Command "Start-Process '%~f0' -Verb RunAs" & exit /b) +mkdir %SystemRoot%\System32\EasyFile +for %%f in ("%~dp0bin\*.*") do @copy /y "%%f" %SystemRoot%\System32\EasyFile\ +regedit /s "%~dp0src\EasyFile.reg" +regedit /s "%~dp0src\FastRegister.reg" +regedit /s "%~dp0src\QuickSettings\AddQuickSettings.reg" +RegisterAdd PathAdd.exe dir +RegisterAdd PathDel.exe dir +RegisterAdd PathSee.exe dir +PathAdd %~dp0binPathAdd %SystemRoot%\System32\EasyFile + diff --git a/src/CLEAR.reg b/src/CLEAR.reg new file mode 100644 index 0000000..b565687 --- /dev/null +++ b/src/CLEAR.reg @@ -0,0 +1,280 @@ +Windows Registry Editor Version 5.00 + +[-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace] + + +[-HKEY_CLASSES_ROOT\CLSID\{09A47860-11B0-4DA5-AFA5-26D86198A780}] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{09A47860-11B0-4DA5-AFA5-26D86198A780}] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\EPP] +[-HKEY_CLASSES_ROOT\*\shell\YunShellExplorerCommand] + +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QuarkAI.ContextMenu] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\YunShellExt] +[-HKEY_CLASSES_ROOT\.png\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.png\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.jpg\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpg\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpeg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.jpeg\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpeg\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.wav\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ogg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ogg\ShellEx\ContextMenuHandlers] +[-HKEY_CLASSES_ROOT\.mp3\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mp4\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mp3\ShellEx\ContextMenuHandlers] +[-HKEY_CLASSES_ROOT\.mkv\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.3gp\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.aac\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ac3\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.aif\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.amr\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ape\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.avi\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.flac\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.flv\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.jpeg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.jpg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.m4a\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mid\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.midi\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mkv\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mov\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mp2\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mp3\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mp4\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mpeg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.mpega\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ogg\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.pdf\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.png\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ra\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.ram\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.wav\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.webp\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.wma\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.wmv\OpenWithList\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\Applications\BaiduNetdisk.open] +[-HKEY_CLASSES_ROOT\.aac\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.aiff\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.amr\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.bmp\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.doc\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.docx\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.flac\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.gif\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpe\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpeg\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpg\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.m4a\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.mp3\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.ogg\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.pdf\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.pjpeg\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.png\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.ppt\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.pptx\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.wav\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.wma\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.xls\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.xlsx\ShellEx\ContextMenuHandlers\ Quark.ContextMenuExt] + +[-HKEY_CLASSES_ROOT\.aac\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.aiff\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.amr\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.bmp\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.doc\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.docx\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.flac\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.gif\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpe\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpeg\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.jpg\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.m4a\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.mp3\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.ogg\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.pdf\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.pjpeg\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.png\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.ppt\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.pptx\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.wav\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.wma\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.xls\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\.xlsx\ShellEx\ContextMenuHandlers\ QuarkCloudDrive.ContextMenuExt] +[-HKEY_CLASSES_ROOT\CLSID\{18701C81-34AB-498E-8C7F-5D26B9C36732}] +[-HKEY_CLASSES_ROOT\*\shell\123pan] +[-HKEY_CLASSES_ROOT\Directory\shell\YunShellExplorerCommand] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\YunShellExt] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\ Quark.ContextMenuExt] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\ImaContextMenu] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\ImaContextMenu] +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked] +"{CB3D0F55-BC2C-4C1A-85ED-23ED75B5106B}"="" +[-HKEY_CLASSES_ROOT\Directory\shell\123pan] +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]RazerCortex=- +[-HKEY_CLASSES_ROOT\CLSID\{0E270DAA-1BE6-48F2-AC49-7F9B89AAADF3}] +[-HKEY_CLASSES_ROOT\*\shell\123pan] +[-HKEY_CLASSES_ROOT\*\shell\ToDeskSendFile] +[-HKEY_CLASSES_ROOT\Directory\shell\ToDeskSendFile] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQSendTo] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQSendTo] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQSendTo] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQSendTo] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\DesktopBackground\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\DesktopBackground\shellex\ContextMenuHandlers\QQShellExt2] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\DesktopBackground\shellex\ContextMenuHandlers\QQ闪传] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\DesktopBackground\shellex\ContextMenuHandlers\QQTransfer] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\QQPCFileMenuExt] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\DesktopBackground\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\DesktopBackground\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\CLSID\{53D2405C-48AB-4C8A-8F59-CE0610F13BBC}] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{53D2405C-48AB-4C8A-8F59-CE0610F13BBC}] +[-HKEY_CLASSES_ROOT\CLSID\{5D639F05-2181-4B58-A850-9F7E5C79D5DE}] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5D639F05-2181-4B58-A850-9F7E5C79D5DE}] +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked] +"{53D2405C-48AB-4C8A-8F59-CE0610F13BBC}"="QQShellExt" +"{5D639F05-2181-4B58-A850-9F7E5C79D5DE}"="QQShellExt64" +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +@="{53D2405C-48AB-4C8A-8F59-CE0610F13BBC}" +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt] +@="{53D2405C-48AB-4C8A-8F59-CE0610F13BBC}" +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +@="{53D2405C-48AB-4C8A-8F59-CE0610F13BBC}" +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt64] +@="{5D639F05-2181-4B58-A850-9F7E5C79D5DE}" +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt64] +@="{5D639F05-2181-4B58-A850-9F7E5C79D5DE}" +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt64] +@="{5D639F05-2181-4B58-A850-9F7E5C79D5DE}" +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\QQShellExt64] + +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\lnkfile\shellex\ContextMenuHandlers\QQShellExt] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\lnkfile\shellex\ContextMenuHandlers\QQShellExt64] +[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{E2E3C5A1-8D8A-4C3B-9F9E-2345D0WNLOAD}] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] +[-] \ No newline at end of file diff --git a/src/CollectAndRun.bat b/src/CollectAndRun.bat new file mode 100644 index 0000000..16220a1 --- /dev/null +++ b/src/CollectAndRun.bat @@ -0,0 +1 @@ +call "%~1" %ARGS% \ No newline at end of file diff --git a/src/EasyFile.reg b/src/EasyFile.reg new file mode 100644 index 0000000..e4bede9 --- /dev/null +++ b/src/EasyFile.reg @@ -0,0 +1,113 @@ +Windows Registry Editor Version 5.00 + +;EasyFile + +; ----- OpenCmd ----- +[HKEY_CLASSES_ROOT\Directory\shell\Open_cmd] +@="Open Command Here(&C)" +"icon"="cmd.exe,0" + +[HKEY_CLASSES_ROOT\Directory\shell\Open_cmd\command] +@="cmd.exe /k \"cd /d \"%1\"\"" + +[HKEY_CLASSES_ROOT\Directory\Background\shell\Open_cmd] +@="Open Command Here(&C)" +"icon"="cmd.exe,0" + +[HKEY_CLASSES_ROOT\Directory\Background\shell\Open_cmd\command] +@="cmd.exe /k \"cd /d \"%V\"\"" + +; ----- MakePDF ----- +[HKEY_CLASSES_ROOT\*\shell\MakePDF] +@="Make PDF(&P)" +"icon"="C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,11" + +[HKEY_CLASSES_ROOT\*\shell\MakePDF\command] +@="cmd /c cd /d \"%~dp1\" && magick *.* \"MakePDF.pdf\"" + +[HKEY_CLASSES_ROOT\Directory\shell\MakePDF] +@="Make PDF(&P)" +"icon"="C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,11" + +[HKEY_CLASSES_ROOT\Directory\shell\MakePDF\command] +@="cmd /c cd /d \"%1\" && magick *.* \"MakePDF.pdf\"" + +; ----- Copy Path / ----- +[HKEY_CLASSES_ROOT\*\shell\CopyPathForwardSlash] +@="Copy Path /(&F)" +"icon"="shell32.dll,3" + +[HKEY_CLASSES_ROOT\*\shell\CopyPathForwardSlash\command] +@="cmd /v:on /c \"for %%i in (\"%1\") do set p=%%~i & set p=!p:\\=/! & clipex \"!p!\"\"" + +[HKEY_CLASSES_ROOT\Directory\shell\CopyPathForwardSlash] +@="Copy Path /(&F)" +"icon"="shell32.dll,3" + +[HKEY_CLASSES_ROOT\Directory\shell\CopyPathForwardSlash\command] +@="cmd /v:on /c \"for %%i in (\"%1\") do set p=%%~i & set p=!p:\\=/! & clipex \"!p!\"\"" + +; ----- Path \ ----- +[HKEY_CLASSES_ROOT\*\shell\CopyPathBackSlash] +@="Path \\(&B)" +"icon"="shell32.dll,3" + +[HKEY_CLASSES_ROOT\*\shell\CopyPathBackSlash\command] +@="clipex \"%1\"" + +[HKEY_CLASSES_ROOT\Directory\shell\CopyPathBackSlash] +@="Path \\(&B)" +"icon"="shell32.dll,3" + +[HKEY_CLASSES_ROOT\Directory\shell\CopyPathBackSlash\command] +@="clipex \"%1\"" + +; ----- EasyFile 子菜单 ----- +[HKEY_CLASSES_ROOT\Directory\shell\EasyFile] +"MUIVerb"="EasyFile(&E)" +"SubCommands"="CopyPathDoubleBackSlash;dir;" +"icon"="shell32.dll,3" + +[HKEY_CLASSES_ROOT\*\shell\EasyFile] +"MUIVerb"="EasyFile(&E)" +"SubCommands"="CopyPathDoubleBackSlash;dir;" +"icon"="shell32.dll,3" + +; ----- 子命令:Path \\ ----- +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CopyPathDoubleBackSlash] +"MUIVerb"="Path \\\\(&D)" +"icon"="shell32.dll,3" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CopyPathDoubleBackSlash\command] +@="cmd /v:on /c \"for %%i in (\"%1\") do set p=%%~i & set p=!p:\\=\\\\! & clipex \"!p!\"\"" + +; ----- 子命令:dir ----- +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\dir] +"MUIVerb"="Dir(&L)" +"icon"="shell32.dll,5" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\dir\command] +@="cmd /c dir \"%1\" | clip" + +[HKEY_CLASSES_ROOT\Directory\Background\shell\dir] +"MUIVerb"="Dir(&L)" +"icon"="shell32.dll,5" + +[HKEY_CLASSES_ROOT\Directory\Background\shell\dir\command] +@="cmd /c dir | clip" + +; ----- Path Src ----- +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PathSrc] +"MUIVerb"="Path Src(&S)" +"icon"="shell32.dll,3" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PathSrc\command] +@="powershell.exe -command Set-ItemProperty -Path 'HKCU:\\Software\\EasyFile' -Name 'SrcPath' -Value ((Get-Item -LiteralPath '%1').FullName)" + +; ----- Path Dst ----- +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PathDst] +"MUIVerb"="Path Dst(&T)" +"icon"="shell32.dll,3" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PathDst\command] +@="powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"& 'C:\\EasyFile\\Source\\Get-RelativePath.ps1' -dst '%1'\"" \ No newline at end of file diff --git a/src/FastRegister.reg b/src/FastRegister.reg new file mode 100644 index 0000000..7b0a515 --- /dev/null +++ b/src/FastRegister.reg @@ -0,0 +1,27 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CLASSES_ROOT\batfile\shell\RegisterAdd] +@="RegisterAdd" +"icon"="shell32.dll,3" +[HKEY_CLASSES_ROOT\batfile\shell\RegisterAdd\command] +@="RegisterAdd.exe \"%1\"" + +[HKEY_CLASSES_ROOT\exefile\shell\RegisterAdd] +@="RegisterAdd" +"icon"="shell32.dll,3" +[HKEY_CLASSES_ROOT\exefile\shell\RegisterAdd\command] +@="RegisterAdd.exe \"%1\"" + +[HKEY_CLASSES_ROOT\batfile\shell\RegisterDel] +@="RegisterDel" +"icon"="shell32.dll,3" +[HKEY_CLASSES_ROOT\batfile\shell\RegisterDel\command] +@="RegisterDel.exe \"%1\"" + +[HKEY_CLASSES_ROOT\exefile\shell\RegisterDel] +@="RegisterDel" +"icon"="shell32.dll,3" +[HKEY_CLASSES_ROOT\exefile\shell\RegisterDel\command] +@="RegisterDel.exe \"%1\"" + + \ No newline at end of file diff --git a/src/PathAdd.cpp b/src/PathAdd.cpp new file mode 100644 index 0000000..90f888f --- /dev/null +++ b/src/PathAdd.cpp @@ -0,0 +1,126 @@ +#include +#include +#include +#include +#include +#include +#include + +#pragma comment(lib, "shlwapi.lib") + +static std::string NormalizePath(const std::string& path) { + std::string result = path; + while (result.size() > 1 && (result.back() == '\\' || result.back() == '/')) + result.pop_back(); + std::replace(result.begin(), result.end(), '/', '\\'); + return result; +} + +static std::string ReadUserPath() { + HKEY hKey; + if (RegOpenKeyExA(HKEY_CURRENT_USER, "Environment", 0, KEY_READ, &hKey) != ERROR_SUCCESS) + return ""; + DWORD needed = 0; + RegQueryValueExA(hKey, "Path", nullptr, nullptr, nullptr, &needed); + if (needed == 0) { RegCloseKey(hKey); return ""; } + std::string path(needed, '\0'); + DWORD type = 0; + DWORD size = needed; + LONG ret = RegQueryValueExA(hKey, "Path", nullptr, &type, (BYTE*)&path[0], &size); + RegCloseKey(hKey); + if (ret != ERROR_SUCCESS) return ""; + if (!path.empty() && path.back() == '\0') path.pop_back(); + return path; +} + +static bool WriteUserPath(const std::string& newPath) { + HKEY hKey; + if (RegOpenKeyExA(HKEY_CURRENT_USER, "Environment", 0, KEY_WRITE, &hKey) != ERROR_SUCCESS) + return false; + DWORD size = (DWORD)newPath.size() + 1; + LONG ret = RegSetValueExA(hKey, "Path", 0, REG_EXPAND_SZ, (const BYTE*)newPath.c_str(), size); + RegCloseKey(hKey); + if (ret != ERROR_SUCCESS) return false; + SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, nullptr); + return true; +} + +static std::vector SplitPath(const std::string& path) { + std::vector items; + size_t start = 0, end; + while ((end = path.find(';', start)) != std::string::npos) { + std::string token = path.substr(start, end - start); + if (!token.empty()) items.push_back(NormalizePath(token)); + start = end + 1; + } + if (start < path.size()) { + std::string token = path.substr(start); + if (!token.empty()) items.push_back(NormalizePath(token)); + } + return items; +} + +static std::string JoinPath(const std::vector& items) { + std::string result; + for (size_t i = 0; i < items.size(); ++i) { + if (i) result += ';'; + result += items[i]; + } + return result; +} + +static std::vector AddPaths(const std::vector& current, + const std::vector& toAdd) { + std::vector result = current; + for (const auto& add : toAdd) { + bool exists = false; + for (const auto& item : result) { + if (_stricmp(item.c_str(), add.c_str()) == 0) { exists = true; break; } + } + if (!exists) result.push_back(add); + } + return result; +} + +int main(int argc, char* argv[]) { + if (argc < 2) { + std::cout << "Usage: PathAdd [path2 ...]\n"; + return 0; + } + + std::string oldPath = ReadUserPath(); + std::vector currentItems = SplitPath(oldPath); + std::vector addList; + + for (int i = 1; i < argc; ++i) { + char absPath[MAX_PATH]; + std::string raw; + if (GetFullPathNameA(argv[i], MAX_PATH, absPath, NULL) != 0) + raw = absPath; + else + raw = argv[i]; + std::string norm = NormalizePath(raw); + if (!norm.empty()) addList.push_back(norm); + } + + if (addList.empty()) { + std::cout << "No valid paths to add.\n"; + return 0; + } + + std::vector newItems = AddPaths(currentItems, addList); + int added = (int)(newItems.size() - currentItems.size()); + if (added == 0) { + std::cout << "All paths already exist, nothing changed.\n"; + return 0; + } + + std::string newPath = JoinPath(newItems); + if (!WriteUserPath(newPath)) { + std::cerr << "Failed to write to registry.\n"; + return 1; + } + + std::cout << "Successfully added " << added << " path(s).\n"; + return 0; +} \ No newline at end of file diff --git a/src/PathDel.cpp b/src/PathDel.cpp new file mode 100644 index 0000000..793a5b4 --- /dev/null +++ b/src/PathDel.cpp @@ -0,0 +1,131 @@ +#include +#include +#include +#include +#include +#include +#include + +#pragma comment(lib, "shlwapi.lib") + +static std::string NormalizePath(const std::string& path) { + std::string result = path; + while (result.size() > 1 && (result.back() == '\\' || result.back() == '/')) + result.pop_back(); + std::replace(result.begin(), result.end(), '/', '\\'); + return result; +} + +static std::string ReadUserPath() { + HKEY hKey; + if (RegOpenKeyExA(HKEY_CURRENT_USER, "Environment", 0, KEY_READ, &hKey) != ERROR_SUCCESS) + return ""; + DWORD needed = 0; + RegQueryValueExA(hKey, "Path", nullptr, nullptr, nullptr, &needed); + if (needed == 0) { RegCloseKey(hKey); return ""; } + std::string path(needed, '\0'); + DWORD type = 0; + DWORD size = needed; + LONG ret = RegQueryValueExA(hKey, "Path", nullptr, &type, (BYTE*)&path[0], &size); + RegCloseKey(hKey); + if (ret != ERROR_SUCCESS) return ""; + if (!path.empty() && path.back() == '\0') path.pop_back(); + return path; +} + +static bool WriteUserPath(const std::string& newPath) { + HKEY hKey; + if (RegOpenKeyExA(HKEY_CURRENT_USER, "Environment", 0, KEY_WRITE, &hKey) != ERROR_SUCCESS) + return false; + DWORD size = (DWORD)newPath.size() + 1; + LONG ret = RegSetValueExA(hKey, "Path", 0, REG_EXPAND_SZ, (const BYTE*)newPath.c_str(), size); + RegCloseKey(hKey); + if (ret != ERROR_SUCCESS) return false; + SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, nullptr); + return true; +} + +static std::vector SplitPath(const std::string& path) { + std::vector items; + size_t start = 0, end; + while ((end = path.find(';', start)) != std::string::npos) { + std::string token = path.substr(start, end - start); + if (!token.empty()) items.push_back(NormalizePath(token)); + start = end + 1; + } + if (start < path.size()) { + std::string token = path.substr(start); + if (!token.empty()) items.push_back(NormalizePath(token)); + } + return items; +} + +static std::string JoinPath(const std::vector& items) { + std::string result; + for (size_t i = 0; i < items.size(); ++i) { + if (i) result += ';'; + result += items[i]; + } + return result; +} + +static std::vector RemovePaths(const std::vector& current, + const std::vector& toRemove) { + std::vector result; + for (const auto& item : current) { + bool found = false; + for (const auto& del : toRemove) { + if (_stricmp(item.c_str(), del.c_str()) == 0) { found = true; break; } + } + if (!found) result.push_back(item); + } + return result; +} + +int main(int argc, char* argv[]) { + if (argc < 2) { + std::cout << "Usage: PathDel [path2 ...]\n"; + return 0; + } + + std::string oldPath = ReadUserPath(); + if (oldPath.empty()) { + std::cerr << "Current Path is empty or read failed, exiting.\n"; + return 1; + } + + std::vector currentItems = SplitPath(oldPath); + std::vector delList; + + for (int i = 1; i < argc; ++i) { + char absPath[MAX_PATH]; + std::string raw; + if (GetFullPathNameA(argv[i], MAX_PATH, absPath, NULL) != 0) + raw = absPath; + else + raw = argv[i]; + std::string norm = NormalizePath(raw); + if (!norm.empty()) delList.push_back(norm); + } + + if (delList.empty()) { + std::cout << "No valid paths to delete.\n"; + return 0; + } + + std::vector newItems = RemovePaths(currentItems, delList); + int deleted = (int)(currentItems.size() - newItems.size()); + if (deleted == 0) { + std::cout << "No matching paths found, nothing changed.\n"; + return 0; + } + + std::string newPath = JoinPath(newItems); + if (!WriteUserPath(newPath)) { + std::cerr << "Failed to write to registry.\n"; + return 1; + } + + std::cout << "Successfully removed " << deleted << " path(s).\n"; + return 0; +} \ No newline at end of file diff --git a/src/PathSee.cpp b/src/PathSee.cpp new file mode 100644 index 0000000..710f791 --- /dev/null +++ b/src/PathSee.cpp @@ -0,0 +1,15 @@ +#include +#include +int main(){ + char p[32767]; + GetEnvironmentVariable("PATH",p,sizeof(p)); + char*t=strtok(p,";"); + while(t){puts(t);t=strtok(NULL,";");} + + DWORD pid; + GetWindowThreadProcessId(GetConsoleWindow(), &pid); + if (pid == GetCurrentProcessId()) + system("pause"); + + return 0; +} \ No newline at end of file diff --git a/src/QuickSettings/AddQuickSettings.reg b/src/QuickSettings/AddQuickSettings.reg new file mode 100644 index 0000000..b92cf67 Binary files /dev/null and b/src/QuickSettings/AddQuickSettings.reg differ diff --git a/src/QuickSettings/DelQuickSettings.reg b/src/QuickSettings/DelQuickSettings.reg new file mode 100644 index 0000000..eb71a20 Binary files /dev/null and b/src/QuickSettings/DelQuickSettings.reg differ diff --git a/src/QuickSettings/desktop.ini b/src/QuickSettings/desktop.ini new file mode 100644 index 0000000..40b6a46 --- /dev/null +++ b/src/QuickSettings/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Windows\System32\SHELL32.dll,137 diff --git a/src/RegisterAdd.cpp b/src/RegisterAdd.cpp new file mode 100644 index 0000000..ecbf9be --- /dev/null +++ b/src/RegisterAdd.cpp @@ -0,0 +1,83 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace std; +bool IsAdmin() { + HANDLE hToken; + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) return 0; + TOKEN_ELEVATION te; + DWORD s; + bool r = GetTokenInformation(hToken, TokenElevation, &te, sizeof(te), &s) && te.TokenIsElevated; + CloseHandle(hToken); + return r; +} +void RunAsAdmin() { + char p[MAX_PATH]; GetModuleFileNameA(NULL, p, MAX_PATH); + const char* cmd = GetCommandLineA(); + if (*cmd == '\"') { cmd = strchr(cmd + 1, '\"'); if (cmd) cmd++; } + else { cmd = strchr(cmd, ' '); } + while (cmd && *cmd == ' ') cmd++; + ShellExecuteA(NULL, "runas", p, cmd ? cmd : "", NULL, SW_SHOW); +} +void StripPath(char* s) { + char* p = strrchr(s, '\\'); + if (!p) p = strrchr(s, '/'); + if (p) memmove(s, p+1, strlen(p+1)+1); +} +void RemoveExt(char* s) { + char* p = strrchr(s, '.'); + if (p && p > s) *p = 0; +} +int main(int a, char* v[]) { +for(int i=0;i= 3) { + // 使用命令行第三个参数作为扩展名列表(空格分隔) + strncpy(buf, v[2], sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + } else { + printf("Enter extensions (space-separated, e.g. .png .jpg or dir):\n> "); + fgets(buf, 1024, stdin); + } + + char* p = strtok(buf, " \t\n"); + std::vector exts; + while(p){ exts.push_back(p); p=strtok(NULL," \t\n"); } + if(exts.empty()) exts.push_back("*"); + for(auto e:exts){ + char kp[512]; + if(strcmp(e,"dir")==0) sprintf(kp,"Directory\\shell\\%s",f); + else sprintf(kp,"%s\\shell\\%s",e,f); + HKEY h; if( + // RegCreateKeyA(HKEY_CLASSES_ROOT,kp,&h) + RegCreateKeyExA(HKEY_CLASSES_ROOT, + kp, + 0, NULL, REG_OPTION_NON_VOLATILE, + KEY_WRITE, NULL, &h, NULL) + + ==0) + { + //这个注释不能删:RegSetValueA是创建子key RegSetValueExA才是创建值 不要用RegSetValueA 某些没母傻逼AI认为RegSetValueA能创建值,特此注释 + RegSetValueA(h, NULL, REG_SZ, f, strlen(f)+1); + std::string ic = std::string(f) + ",0"; + RegSetValueExA(h, "icon", 0, REG_SZ,(const BYTE*) ic.c_str(), ic.size()+1); + + // RegSetValueA(h, "icon", REG_SZ, "%1", 3); + char cmd[512]; sprintf(cmd,"\"%s\" %%L",v[1]); + RegSetValueA(h,"command",REG_SZ,cmd,strlen(cmd)+1); + RegCloseKey(h); + } + } + return 0; +} \ No newline at end of file diff --git a/src/RegisterDel.cpp b/src/RegisterDel.cpp new file mode 100644 index 0000000..84e216e --- /dev/null +++ b/src/RegisterDel.cpp @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include +#pragma comment(lib, "shlwapi.lib") + +bool IsAdmin() { + HANDLE hToken; + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) return 0; + TOKEN_ELEVATION te; + DWORD s; + bool r = GetTokenInformation(hToken, TokenElevation, &te, sizeof(te), &s) && te.TokenIsElevated; + CloseHandle(hToken); + return r; +} +void RunAsAdmin() { + char p[MAX_PATH]; GetModuleFileNameA(NULL, p, MAX_PATH); + const char* cmd = GetCommandLineA(); + if (*cmd == '\"') { cmd = strchr(cmd + 1, '\"'); if (cmd) cmd++; } + else { cmd = strchr(cmd, ' '); } + while (cmd && *cmd == ' ') cmd++; + ShellExecuteA(NULL, "runas", p, cmd ? cmd : "", NULL, SW_SHOW); +} +void StripPath(char* s) { + char* p = strrchr(s, '\\'); + if (!p) p = strrchr(s, '/'); + if (p) memmove(s, p+1, strlen(p+1)+1); +} +void RemoveExt(char* s) { + char* p = strrchr(s, '.'); + if (p && p > s) *p = 0; +} +int main(int a, char* v[]) { + if (!IsAdmin()) { RunAsAdmin(); return 0; } + if (a < 2) return 1; + char f[MAX_PATH]; strcpy(f, v[1]); StripPath(f); RemoveExt(f); + printf("Deleting associations for '%s'...\n", f); + char sub[256]; + DWORD idx = 0; + while (RegEnumKeyA(HKEY_CLASSES_ROOT, idx, sub, 256) == 0) { + // 检查 .xxx、Directory、* 等可能存放右键菜单的顶级键 + if (sub[0] == '.' || strcmp(sub, "Directory") == 0 || strcmp(sub, "*") == 0) { + char path[512]; + sprintf(path, "%s\\shell\\%s", sub, f); + HKEY hTest; + if (RegOpenKeyA(HKEY_CLASSES_ROOT, path, &hTest) == 0) { + RegCloseKey(hTest); + if (RegDeleteTreeA(HKEY_CLASSES_ROOT, path) == ERROR_SUCCESS) { + printf("Deleted: %s\n", path); + } else { + printf("Failed to delete: %s\n", path); + } + } + } + idx++; + } + printf("Done. Please restart Explorer or logoff/on to refresh menus.\n"); + return 0; +} \ No newline at end of file diff --git a/src/UnEasyFile.reg b/src/UnEasyFile.reg new file mode 100644 index 0000000..ee3d6a1 --- /dev/null +++ b/src/UnEasyFile.reg @@ -0,0 +1,24 @@ +Windows Registry Editor Version 5.00 + +[-HKEY_CLASSES_ROOT\Directory\shell\Open_cmd] +[-HKEY_CLASSES_ROOT\Directory\Background\shell\Open_cmd] +[-HKEY_CLASSES_ROOT\*\shell\MakePDF] +[-HKEY_CLASSES_ROOT\Directory\shell\MakePDF] + +[-HKEY_CLASSES_ROOT\Directory\Background\shell\dir] +[-HKEY_CLASSES_ROOT\Directory\Background\shell\dir\command] + +; 删除最外层的 CopyPathForwardSlash(正斜杠) +[-HKEY_CLASSES_ROOT\*\shell\CopyPathForwardSlash] +[-HKEY_CLASSES_ROOT\Directory\shell\CopyPathForwardSlash] + +; 删除子菜单 EasyFile +[-HKEY_CLASSES_ROOT\Directory\shell\EasyFile] +[-HKEY_CLASSES_ROOT\*\shell\EasyFile] + +; 删除子命令 +[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CopyPathBackSlash] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\CopyPathDoubleBackSlash] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\dir] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PathSrc] +[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\PathDst] \ No newline at end of file diff --git a/src/UnFastRegister.reg b/src/UnFastRegister.reg new file mode 100644 index 0000000..9ca442c --- /dev/null +++ b/src/UnFastRegister.reg @@ -0,0 +1,9 @@ +Windows Registry Editor Version 5.00 + +[-HKEY_CLASSES_ROOT\batfile\shell\RegisterAdd] +[-HKEY_CLASSES_ROOT\exefile\shell\RegisterAdd] + +[-HKEY_CLASSES_ROOT\batfile\shell\RegisterDel] +[-HKEY_CLASSES_ROOT\exefile\shell\RegisterDel] + + \ No newline at end of file diff --git a/src/clipex.cpp b/src/clipex.cpp new file mode 100644 index 0000000..6aa5d47 --- /dev/null +++ b/src/clipex.cpp @@ -0,0 +1,2 @@ +#include +int main(int argc,char**argv){if(argc<2)return 1;OpenClipboard(0);EmptyClipboard();HGLOBAL m=GlobalAlloc(0,strlen(argv[1])+1);strcpy((char*)GlobalLock(m),argv[1]);GlobalUnlock(m);SetClipboardData(CF_TEXT,m);CloseClipboard();return 0;} \ No newline at end of file diff --git a/src/getadmin.bat b/src/getadmin.bat new file mode 100644 index 0000000..c083fbb --- /dev/null +++ b/src/getadmin.bat @@ -0,0 +1 @@ +@fltmc >nul 2>&1 || (powershell -Command "Start-Process '%~f0' -Verb RunAs" & exit /b) \ No newline at end of file diff --git a/src/pl.cpp b/src/pl.cpp new file mode 100644 index 0000000..7b9e63c --- /dev/null +++ b/src/pl.cpp @@ -0,0 +1,188 @@ +// pd.cpp : g++ -std=c++14 pd.cpp -o pd.exe +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +string pctDecode(const string& s) { + string r; + for (size_t i = 0; i < s.size(); i++) { + if (s[i] == '%' && i + 2 < s.size() && + isxdigit((unsigned char)s[i+1]) && isxdigit((unsigned char)s[i+2])) { + r += (char)strtol(s.substr(i+1, 2).c_str(), 0, 16); i += 2; + } else if (s[i] == '+') r += ' '; + else r += s[i]; + } + return r; +} + +string filenameFromQuery(const string& q) { + string d = pctDecode(q); + size_t p = 0; + while ((p = d.find("filename=", p)) != string::npos) { + size_t s = p + 9, e = d.find_first_of("&;", s); + string f = d.substr(s, e == string::npos ? string::npos : e - s); + if (!f.empty() && f.front() == '"') f.erase(0, 1); + if (!f.empty() && f.back() == '"') f.pop_back(); + if (!f.empty()) return f; + p = s; + } + return ""; +} + +string psQuote(const string& s) { + string r; + for (char c : s) { r += c; if (c == '\'') r += '\''; } + return r; +} + +bool fileSize(const string& path, long long& size) { + WIN32_FILE_ATTRIBUTE_DATA d; + if (!GetFileAttributesExA(path.c_str(), GetFileExInfoStandard, &d)) return false; + if (d.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) return false; + size = ((long long)d.nFileSizeHigh << 32) | d.nFileSizeLow; + return true; +} + +string detectProxy() { + const char* envs[] = {"HTTPS_PROXY","https_proxy","HTTP_PROXY","http_proxy","ALL_PROXY","all_proxy"}; + for (auto n : envs) { const char* e = getenv(n); if (e && *e) return e; } + + HKEY k; + if (RegOpenKeyExA(HKEY_CURRENT_USER, + "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", + 0, KEY_READ, &k) != ERROR_SUCCESS) return ""; + + DWORD enable = 0, sz = sizeof(enable), type = 0; + if (RegQueryValueExA(k, "ProxyEnable", 0, &type, (BYTE*)&enable, &sz) != ERROR_SUCCESS || + !enable) { RegCloseKey(k); return ""; } + + char buf[1024] = {0}; sz = sizeof(buf); + RegQueryValueExA(k, "ProxyServer", 0, &type, (BYTE*)buf, &sz); + RegCloseKey(k); + + string p = buf; + if (p.find('=') != string::npos) { + string http, https; size_t i = 0; + while (i < p.size()) { + size_t e = p.find(';', i); + string seg = p.substr(i, e == string::npos ? string::npos : e - i); + size_t eq = seg.find('='); + if (eq != string::npos) { + string kk = seg.substr(0, eq), vv = seg.substr(eq + 1); + if (kk == "https") https = vv; + else if (kk == "http") http = vv; + } + if (e == string::npos) break; + i = e + 1; + } + p = !https.empty() ? https : http; + } + return p; +} + +long long remoteSize(const string& url, const string& proxy) { + string px = proxy.empty() ? "" : "-x \"" + proxy + "\" "; + string cmd = "curl -sIL -A \"Mozilla/5.0\" " + px + "\"" + url + "\" 2>nul"; + FILE* f = _popen(cmd.c_str(), "r"); + if (!f) return -1; + char buf[4096]; long long size = -1; + while (fgets(buf, sizeof buf, f)) { + string low(buf); + for (auto& ch : low) ch = (char)tolower((unsigned char)ch); + if (low.compare(0, 15, "content-length:") == 0) { + long long v = atoll(buf + 15); + if (v > 0) size = v; + } + } + _pclose(f); + return size; +} + +int run(const string& cmd) { + vector buf(cmd.begin(), cmd.end()); buf.push_back(0); + STARTUPINFOA si = {sizeof(si)}; PROCESS_INFORMATION pi = {0}; + if (!CreateProcessA(0, buf.data(), 0, 0, TRUE, 0, 0, 0, &si, &pi)) return -1; + WaitForSingleObject(pi.hProcess, INFINITE); + DWORD code = 1; GetExitCodeProcess(pi.hProcess, &code); + CloseHandle(pi.hProcess); CloseHandle(pi.hThread); + return (int)code; +} + +int main(int c, char** v) { + SetConsoleOutputCP(65001); + string raw = c > 1 ? v[1] : ""; + if (raw.empty()) { cout << "URL: "; getline(cin, raw); } + if (raw.find("://") == string::npos) raw = "https://" + raw; + + string base = raw, query; + size_t h = base.find('#'); + if (h != string::npos) base = base.substr(0, h); + size_t q = base.find('?'); + if (q != string::npos) { query = base.substr(q + 1); base = base.substr(0, q); } + + string name = filenameFromQuery(query); + if (name.empty()) { + string p = base; + while (!p.empty() && p.back() == '/') p.pop_back(); + size_t s = p.find_last_of('/'); + name = pctDecode(s == string::npos ? p : p.substr(s + 1)); + } + if (name.empty()) name = "download.bin"; + + string out = string(getenv("USERPROFILE")) + "\\Downloads\\" + name; + CreateDirectoryA(out.substr(0, out.find_last_of('\\')).c_str(), 0); + + string proxy = detectProxy(); + cout << "Proxy: " << (proxy.empty() ? "(none)" : proxy) << endl; + + long long local = 0, remote = -1; + bool exist = fileSize(out, local); + if (exist) remote = remoteSize(raw, proxy); + + if (exist && remote > 0 && local == remote) { + cout << "Already complete (" << local << " bytes): " << out << endl; + return 0; + } + if (exist && remote > 0 && local > remote) { + cout << "Local > remote, restarting." << endl; + DeleteFileA(out.c_str()); exist = false; local = 0; + } + + string pxArg = proxy.empty() ? "" : "-x \"" + proxy + "\" "; + string resumeArg = exist ? "-C - " : ""; + string cmd = "curl -L --fail --retry 3 --retry-delay 2 -A \"Mozilla/5.0\" " + + pxArg + resumeArg + "-o \"" + out + "\" \"" + raw + "\""; + cout << "$ " << cmd << endl; + cout << "File: " << name << endl; + if (exist) cout << "Resume " << local << " / " + << (remote > 0 ? to_string(remote) : string("?")) << " bytes" << endl; + int rc = run(cmd); + + if (rc == -1 || rc == 9009) { + string psProxy = proxy.empty() ? "" : "$a.Proxy='" + psQuote(proxy) + "';"; + string ps = + "[Net.ServicePointManager]::SecurityProtocol='Tls12,Tls13';" + "$f='" + psQuote(out) + "';" + "$a=@{Uri='" + psQuote(raw) + "';UseBasicParsing=$true;UserAgent='Mozilla/5.0'};" + + psProxy + + "$n=0; if(Test-Path -LiteralPath $f){$n=(Get-Item -LiteralPath $f).Length};" + "if($n -gt 0){" + " $a.Headers=@{Range=\"bytes=$n-\"};" + " $part=$f+'.part'; if(Test-Path -LiteralPath $part){Remove-Item $part -Force};" + " Invoke-WebRequest @a -OutFile $part;" + " $fs=[IO.File]::Open($f,'Append'); $rs=[IO.File]::OpenRead($part);" + " $rs.CopyTo($fs); $rs.Close(); $fs.Close(); Remove-Item $part -Force;" + "} else { Invoke-WebRequest @a -OutFile $f }"; + cmd = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"" + ps + "\""; + cout << "$ " << cmd << endl; + rc = run(cmd); + } + + if (rc) { cerr << "Download failed (exit " << rc << ")." << endl; return 2; } + cout << "Done." << endl; +} \ No newline at end of file diff --git a/src/开启或关闭驱动自检安装/Data/Disabled.cmd b/src/开启或关闭驱动自检安装/Data/Disabled.cmd new file mode 100644 index 0000000..1833645 --- /dev/null +++ b/src/开启或关闭驱动自检安装/Data/Disabled.cmd @@ -0,0 +1,34 @@ +@echo off +if "%1"=="h" goto begin +start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit +:begin +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "3G" /t REG_DWORD /d "00000001" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "4G" /t REG_DWORD /d "00000001" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "Default" /t REG_DWORD /d "00000002" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "Ethernet" /t REG_DWORD /d "00000002" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "WiFi" /t REG_DWORD /d "00000002" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v "SearchOrderConfig" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Metadata" /v "PreventDeviceMetadataFromNetwork" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Update" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Update\ExcludeWUDriversInQualityUpdate" /v "value" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\PolicyState" /v "ExcludeWUDrivers" /t REG_DWORD /d 1 /f +RD /S/ Q %SystemRoot%\SoftwareDistribution +net stop wuauserv +setlocal enabledelayedexpansion +set Vbscript=Msgbox("Ƿϵͳ [ Ч ]",1,"ϵͳѣֹͣ") +for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a" +set ReturnValue1=ȷ +set ReturnValue2=ȡ +echo !ReturnValue%MsHtaReturnValue%! +if %MsHtaReturnValue% == 1 ( + echo + shutdown /r /t 1 /f +) else ( + echo ȡ +) +exit +pause \ No newline at end of file diff --git a/src/开启或关闭驱动自检安装/Data/Enabled.cmd b/src/开启或关闭驱动自检安装/Data/Enabled.cmd new file mode 100644 index 0000000..f0ae8f0 --- /dev/null +++ b/src/开启或关闭驱动自检安装/Data/Enabled.cmd @@ -0,0 +1,34 @@ +@echo off +if "%1"=="h" goto begin +start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit +:begin +RD /S/ Q %SystemRoot%\SoftwareDistribution +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "3G" /t REG_DWORD /d "00000002" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "4G" /t REG_DWORD /d "00000002" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "Default" /t REG_DWORD /d "00000001" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "Ethernet" /t REG_DWORD /d "00000001" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost" /v "WiFi" /t REG_DWORD /d "00000001" /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v "SearchOrderConfig" /t REG_DWORD /d 1 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Device Metadata" /v "PreventDeviceMetadataFromNetwork" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Update" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Update\ExcludeWUDriversInQualityUpdate" /v "value" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 0 /f +REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\PolicyState" /v "ExcludeWUDrivers" /t REG_DWORD /d 0 /f +net start wuauserv +setlocal enabledelayedexpansion +set Vbscript=Msgbox("Ƿϵͳ [ Ч ]",1,"ϵͳѣѿ") +for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a" +set ReturnValue1=ȷ +set ReturnValue2=ȡ +echo !ReturnValue%MsHtaReturnValue%! +if %MsHtaReturnValue% == 1 ( + echo + shutdown /r /t 1 /f +) else ( + echo ȡ +) +exit +pause \ No newline at end of file diff --git a/src/开启或关闭驱动自检安装/Data/NSudo.exe b/src/开启或关闭驱动自检安装/Data/NSudo.exe new file mode 100644 index 0000000..a0741ac Binary files /dev/null and b/src/开启或关闭驱动自检安装/Data/NSudo.exe differ diff --git a/src/开启或关闭驱动自检安装/desktop.ini b/src/开启或关闭驱动自检安装/desktop.ini new file mode 100644 index 0000000..57c8a14 --- /dev/null +++ b/src/开启或关闭驱动自检安装/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=C:\Windows\System32\SHELL32.dll,10 +[ViewState] +Mode= +Vid= +FolderType=Generic diff --git a/src/开启或关闭驱动自检安装/关闭.cmd b/src/开启或关闭驱动自检安装/关闭.cmd new file mode 100644 index 0000000..65153ba --- /dev/null +++ b/src/开启或关闭驱动自检安装/关闭.cmd @@ -0,0 +1,2 @@ +@echo off +@start /b "Data\Install - TrustedInstaller" "%~dp0Data\NSudo.exe" -U:T -P:E "%~dp0Data\Disabled.cmd" \ No newline at end of file diff --git a/src/开启或关闭驱动自检安装/开启.cmd b/src/开启或关闭驱动自检安装/开启.cmd new file mode 100644 index 0000000..2767fd4 --- /dev/null +++ b/src/开启或关闭驱动自检安装/开启.cmd @@ -0,0 +1,2 @@ +@echo off +@start /b "Data\Install - TrustedInstaller" "%~dp0Data\NSudo.exe" -U:T -P:E "%~dp0Data\Enabled.cmd" diff --git a/src/开启或关闭驱动自检安装/说明.txt b/src/开启或关闭驱动自检安装/说明.txt new file mode 100644 index 0000000..8ffbcd8 --- /dev/null +++ b/src/开启或关闭驱动自检安装/说明.txt @@ -0,0 +1,3 @@ +提醒:开启后【根据自身网络原因会存在部分延迟且检测失败的情况】 + +建议:可借助第三方驱动工具 或 官网搜索选择自己合适的驱动下载安装 \ No newline at end of file diff --git a/src/简体英文输入法添加删除/desktop.ini b/src/简体英文输入法添加删除/desktop.ini new file mode 100644 index 0000000..2564d58 --- /dev/null +++ b/src/简体英文输入法添加删除/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Windows\System32\SHELL32.dll,5 diff --git a/src/简体英文输入法添加删除/删除英文输入法.reg b/src/简体英文输入法添加删除/删除英文输入法.reg new file mode 100644 index 0000000..d46d43f Binary files /dev/null and b/src/简体英文输入法添加删除/删除英文输入法.reg differ diff --git a/src/简体英文输入法添加删除/注销或重启生效.txt b/src/简体英文输入法添加删除/注销或重启生效.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/简体英文输入法添加删除/添加英文输入法.reg b/src/简体英文输入法添加删除/添加英文输入法.reg new file mode 100644 index 0000000..99055ed Binary files /dev/null and b/src/简体英文输入法添加删除/添加英文输入法.reg differ