问题经过我的努力,已经完美解决。在win7和winxp32 sp3下测试无异常。
sp2暂时没有环境。
可实现功能:
1.可自定义注册表路径
2.可自定义要查找和替换的注册表的键名
3.可定义要修改的键值
4.可自定义是否只允许更新一次。
5.更多功能,请仔细阅读源码。
程序源码如下:- @echo off
- setlocal enabledelayedexpansion
- :: 中断当前OE进程
- taskkill /f /im msimn.exe
- ::检测是否更新过
- cls
- if exist "D:\HS\imoke\mailok.imoke" (
- echo.
- echo 您已更新过,重启Outlook Express测试。如果仍有问题,请联系电脑房,电话 3848,3818
- echo.
- echo 按任意键退出程序并重启Outlook Express......
- pause>nul
- start msimn.exe
- exit
- )
- :begin
- ::定义注册表路径循环
- for /l %%a in (1,1,5) do (
- Set "regpath=HKCU\Software\Microsoft\Internet Account Manager\Accounts\0000000%%a"
- ::查找定义
- Set "findstr1=POP3 Server"
- Set "findstr2=SMTP Server"
- Set "find1=mail.rosedalesy.com.cn"
- Set "find2=mx8.dns.com.cn"
- Set "newpop=pop.rosedalesy.com.cn"
- Set "newsmtp=smtp.rosedalesy.com.cn"
- Set a=""
- echo 搜索%%a
- echo !regpath!
- for /f "tokens=1* delims=_" %%1 in ('reg query "!regpath!" /v "!findstr1!" ^| findstr /i "!findstr1!"') do for /f "tokens=1*" %%3 in ("%%~2")do Set "a=%%4"
- echo a=!a!
- echo find=!find1!
- ::如果相同则替换
- if "!a!"=="!find1!" (
- echo 执行修改1
- echo !regpath!
- echo findstr1=!findstr1!
- echo findstr2=!findstr2!
- echo newpop=!newpop!
- echo newsmtp=!newsmtp!
- reg add "!regpath!" /v "!findstr1!" /t REG_SZ /d !newpop! /f
- reg add "!regpath!" /v "!findstr2!" /t REG_SZ /d !newsmtp! /f
- )
- if "!a!"=="!find2!" (
- echo 执行修改2
- echo !regpath!
- echo findstr1=!findstr1!
- echo findstr2=!findstr2!
- echo newpop=!newpop!
- echo newsmtp=!newsmtp!
- reg add "!regpath!" /v "!findstr1!" /t REG_SZ /d !newpop! /f
- reg add "!regpath!" /v "!findstr2!" /t REG_SZ /d !newsmtp! /f
- )
- echo 查找%%a结束
- )
- )
- cls
- md D:\HS\imoke\
- echo %date% %time% 更新完成,按任意键退出。>>D:\HS\imoke\mailok.imoke
- start msimn.exe
- pause>nul
- exit
复制代码 |