标题: [系统增强] 修改注册表开机启动项的批处理小工具 [打印本页]
作者: zhouyongjun 时间: 2009-7-5 15:52 标题: 修改注册表开机启动项的批处理小工具
过年时在家无聊,写了这个东西,现在发上来赚点积分。O(∩_∩)O~
WINDOWS自启动项太多了,见此贴http://bbs.bathome.net/viewthread.php?tid=215&highlight=%D7%D4%C6%F4%B6%AF
我这里只统计了启动文件夹、HKCU和HKLM下的RUN项,这也是我们熟悉的启动项。自己感觉用起来还是很方便的,就发上来跟大家分享一下。- @echo off&setlocal enabledelayedexpansion
- title 系统工具-CMD@WinXP
- :: by zhouyongjun @bbs.bathome.net 2009-07-05
- :main
- cls&color 3f&call :logo
- reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableRegistryTools 2>nul|findstr/i "0x1" >nul 2>nul&&set/a v_registry=0||set/a v_registry=1
- set/a m=0
- reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue 2>nul |findstr/i "0x1" >nul 2>nul&&set/a v_showall=0||set/a v_showall=1
- if %v_registry% equ 1 (
- call :menu 打开注册表编辑器&call :menu 禁用注册表) else (
- call :menu 启用注册表)
- if %v_showall% equ 0 (
- call :menu 禁止显示隐藏文件) else (
- call :menu 允许显示隐藏文件)
- call :menu 开机启动项&call :menu 退出
- echo.
- set "input="&set/p input= 请选择:
- if not defined input goto main
- set "input=%input: =%"&set "input=!input:~0,1!"
- if %v_registry% equ 1 set/a input-=1
- if "%input%" equ "0" start regedit&goto main
- if "%input%" equ "1" (
- reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableRegistryTools /t reg_dword /d %v_registry% /f >nul&goto main)
- if "%input%" equ "2" (reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t reg_dword /d %v_showall% /f >nul&goto main)
- if "%input%" equ "3" call :_window&goto run
- if "%input%" equ "4" exit
- call :error&goto main
- :menu
- set/a m+=1
- echo %m%. %1
- goto :eof
- :run //**获取启动文件夹、HKCU和HKLM下面的RUN项中的自启动信息**//
- cls&color 3f&call :logo
- echo 开机自启动项列表
- echo.&setlocal
- for /r "%userprofile%\「开始」菜单\程序\启动\" %%i in (*.*) do (
- set/a n+=1&set _!n!way="%%i"&call :list !n! "%%~ni"
- )
- set "regcu=HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
- set "reglm=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
- for %%i in (%regcu% %reglm%) do (
- set tem_flag=a
- for /f "skip=4 tokens=1,2*" %%a in ('reg query %%i /s') do (
- set "va=%%a"&set "vb=%%b"&set "vc=%%~c"
- if "!vb!" equ "" set "tem_flag="
- if defined tem_flag (set/a n+=1&set "_!n!name=!va!"&set _!n!way="%%i"
- if /i "!vb!" neq "reg_sz" (set vd=!vb:*:=!&call,set vb=%%vb:!vd!=%%
- set vb=!vb:~-2,2!&set vc=!vb!!vd!
- )
- call :list !n! "!va!" "!vc!"
- )
- )
- )
- echo.
- echo d.删除自启动项(删除单个:d+序号,如d1,d2;删除多个:逗号隔开,如d1,2,5)
- echo a.添加自启动项
- echo m.返回主菜单
- echo q.退出
- set "take="&set /p take= 请输入:
- if not defined take endlocal&goto run
- set "take=%take: =%"&set "take1=!take:~,1!"&set "take2=!take:~1!"
- if /i "%take1%"=="d" goto drun
- if /i "%take1%"=="a" goto add
- if /i "%take1%"=="m" endlocal&call :_window&goto main
- if /i "%take1%"=="q" exit
- call :error&endlocal&goto run
- :drun //**输入验证,删除选定项**//
- set "_take2=!take2:,=!"
- echo %_take2%|findstr "^[1-9][0-9]*$" >nul 2>nul||(call :error&endlocal&goto run)
- for %%i in (%take2%) do (
- if not defined _%%iway (echo.&set/p= 序号%%i不存在<nul&ping /n 2 127.1 >nul
- ) else (if not defined _%%iname (del/a/f/q !_%%iway! >nul) else (
- reg delete !_%%iway! /v "!_%%iname!" /f >nul
- )
- )
- )
- endlocal&goto run
- :add
- cls&color 3f&call :logo
- echo 请把需要添加为开机自启动的文件拖入窗口按回车结束!
- echo.&echo.
- set/p vadd=
- if not defined vadd goto add
- if not exist %vadd% (
- color 4e&echo.&echo.&echo 文件不存在!!!
- ping /n 3 127.1 >nul&goto add
- )
- for %%i in (%vadd%) do (reg add %reglm% /v "%%~ni" /t reg_sz /d %%i /f >nul)
- endlocal&goto run
- :list
- echo %1. %~2 %3
- goto :eof
- :error
- color 4e&echo.
- echo 输入有误,请重新输入!
- ping /n 3 127.1>nul
- cls
- goto :eof
- :_window //**窗口动画**//
- setlocal&call :_move-wind 82 15 25 10 15 82 10 25 82&endlocal&goto :eof
- :_move-wind
- set/a w_n+=1,m_n=w_n%%2&set "sign=-"
- (if %w_n% gtr 2 set "sign=")&(if %w_n% equ 5 goto :eof)
- if %m_n% equ 0 (set con_a=lines&set con_b=cols) else (set con_a=cols&set con_b=lines)
- for /l %%a in (%1,%sign%1,%2) do mode con %con_a%=%%a %con_b%=%3
- shift&shift&goto _move-wind
- :logo
- echo.&echo.
- echo 〓§〓〓〓〓〓§〓〓〓 %date% 〓〓〓§〓〓〓〓〓§〓
- echo.&echo.&goto :eof
复制代码
作者: hackerlong 时间: 2009-7-6 00:53
水平不错哦!我先看看。貌似可以不用这么复杂的。
作者: zhouyongjun 时间: 2009-7-6 14:54 标题: 回复 2楼 的帖子
代码我在最初的基础上优化了下才发上来的,也没仔细去看了
SP2下reg query显示中文有点问题,多了些代码处理;另外reg query会把RUN的子键里面的值也列出来,比如360,会有个子键里面有很多东西,我没让他列出来。如果要实现原有的功能要优化也优化不了多少了吧。这些只是些体力活而已,我也就只有这个水平了,还望大家多多指点。
作者: ynkm0871 时间: 2009-7-10 12:04
下来用一用的啦,很不错的嘛!
作者: best841228 时间: 2009-7-17 22:39
下来用用看,非常感谢提供!
作者: gotmony 时间: 2009-8-3 00:06 标题: 回复 1楼 的帖子
代码看的我头大,但很不错
作者: lxzzr 时间: 2010-9-21 23:44
还是不习惯“cls&color 3f&call :logo”这样的写法,呵呵
作者: huluo666 时间: 2012-10-4 14:36
谢谢,太实用啦!!!
作者: 学无止境 时间: 2012-10-7 02:45
看我的头像@@
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |