星期二, 十二月 27, 2022

157 v2rayN + AdGuard Home 的组合使用, 解决 拦截的域名被拉进代理并解析成功 的问题

前面我在154号文章中提到, Clash For Windows 和 AdGuard Home 默认是有冲突的: 拦截的广告域名被拉进了代理并解析成功. 那篇文章也讲了如何处理这个问题. 

v2rayN 和 AdGuard Home 组合使用时, 也存在同样的问题...


最近在研究各个机场, 观察入口和落地, 速度, 是否支持 torrent 域名等. 有很多的机场订阅, 也有很多的节点, 这时候 v2rayN 就显得比 Clash For Windows 好用许多了, v2rayN 支持批量节点测速, 尤其是 检测真实连接延迟(https://www.google.com/) 和 下载速度(http://cachefly.cachefly.net/10mb.test) 能比 Clash For Windows 更加真实地反映出这个机场在我这个地理位置的性能. 

但是和 Clash For Windows 一样, 有一点非常操蛋, 又把我在 AdGuard Home 拦截掉的广告域名拉进代理解析🤨... 

文档也不是没有, 但对我来说, 看起来有点费劲: 
https://www.v2fly.org/config/dns.html#dnsobject
https://www.v2fly.org/config/routing.html

经过一番折腾, 我就把我设置好的配置, 带上截图分享出来, 以帮助有需要的人. 

当前的版本是: v2rayN 5.3.9 (2022/12/13), 这也是 v2rayN 5 的最后一个大版本. 以后的版本可能有所改进或变动, 可能会更好. 这是未知数, 而且我懒得更新博客😂

====

v2rayN 需要配置两处地方才能实现 V2rayN + AdGuard Home 的组合使用, 既能走自己的 dns 去广告, 也能正常国内外分流. 


参数设置和路由设置. 首先进到参数设置 - (Core)DNS设置:

{
    "servers": [
        "tcp://192.168.10.1:5335",
        {
            "address": "192.168.10.1",
            "port": 5335,
            "skipFallback": true,
            "expectIPs": [
                "ext:geoip.dat:private"
            ]
        },
        "localhost"
    ],
    "clientIp": "",
    "queryStrategy": "UseIPv4",
    "disableCache": true,
    "disableFallback": true,
    "tag": "AdGuard Home"
}
把这个粘贴上去, 当然你直接填一个 localhost 也行, 代表使用本机系统设置的 dns . 我是两个都加上了, 192.168.10.1:5335 是路由器上搭的 AdGuard Home. 而 localhost 是网卡设置里面的 192.168.10.1. 至于 server 为什么要用 tcp://, 因为我写 udp:// 的话, dns 请求就被拉进代理了, 如果不写协议, 只写个 "192.168.10.1:5335", 则会报错: failed to create server > app/dns: failed to create client > app/dns: failed to create nameserver > parse "192.168.10.1:5335": first path segment in URL cannot contain colon
对 v2rayN dns 这块我特码的也是一知半解, 所以就直接复制粘贴上去最好🤦‍♂️

clientIp 其实就是 edns, 就近原则分配IP地址, 访问有 cdn 的大网站时会有加成, 国外 8888 1111 都支持 edns, 国内的都不太行. 目前 AdGuard Home 支持带上edns0头转达至上游, 我测试过. 这个 clientIp 的参数可以改为你附近的IP路由, 比如你实际IP是123.123.123.123, 你就改成 "clientIp": "123.123.122.1". 也可以去访问自己宽带的省运营商官网获得官网IP, 总之自己发挥, 不要写自己真实的 ip 以免出现安全问题. 
剩下几个参数看英文就知道啥意思, 最后一个 tag 名会出现在日志中.

core我选的都是xray, 我路由器上也是这个核, 用习惯了. 自己选自己喜欢的. 


下面是路由设置, 我选了 IPOnDemand 和 mph 算法. 上面发了链接, 官方文档中说 mph 效果好. 域名解析策略有点曹蛋, 我用通俗易懂的话说概括一下: 


这是官网的文档: 
AsIs:只使用域名进行路由选择,默认值;
IPIfNonMatch:当域名没有匹配任何基于域名的规则时,将域名解析成 IP(A 记录或 AAAA 记录),进行基于 IP 规则的匹配;
当一个域名有多个 IP 地址时,会尝试匹配所有的 IP 地址,直到其中一个与某个 IP 规则匹配为止;
解析后的 IP 仅在路由选择时起作用,转发的数据包中依然使用原始域名。
IPOnDemand:当匹配时碰到任何基于 IP 的规则,立即将域名解析为 IP 进行匹配。

在 Clash For Windows Mixin 里的语法就简单得多, 上面这段看得我特么头疼, 我总结下实际测试结果. 
AsIs: 和下面 IPIfNonMatch 一样. 
IPIfNonMatch: AdGuard Home 也没接到 dns 请求, 网页也无法访问, ERR_PROXY_CONNECTION_FAILED: 

IPOnDemand:是正确的选项, 我就不截图了. 

下面来配置规则, 借助geoip就变得非常容易了, 只需要配置三条规则: 

第一条是block, 阻断, 255.255.255.255 是我在 AdGuard Home 中的拦截专用的 IP 地址. 
第二条是direct, 直连, geoip:private,geoip:cn 意思是私有网络地址(局域网那几段) + 中国IP走直连. 
第三条是proxy, 代理, 保持默认. 
剩下的是系统默认规则, 删除或改为 false. 
因为我这 DNS 用的是 dns over https, 没有劫持, 不用担心 DNS 污染问题, 所以就没开 geosite:cn. 广告屏蔽也不需要, 我自己在 AdGuard Home 里面维护. 

最后看看效果: 


国外走代理, 国内走直连, AdGuard Home 屏蔽的也正常屏蔽了, 网页返回 403. 

几个 v2rayN 的使用建议: 
1, 配置好之后记得在系统托盘右键, 把系统代理改成自动. 
2, 订阅可以分组. 
3, 底下的日志太多, 可以在设置里面把日志等级改为 none, 或者在日志上面右键, 设置信息过滤器, 可以选过滤 代理日志 或者 直连日志. 也可以用正则改成过滤掉 代理+直连+拦截, 把这个粘贴进去
^(?!.*(proxy|direct|block)).*$

星期一, 十一月 14, 2022

156 如何快速消耗流量(Windows)

前面找流量消耗工具, 找了一堆网页版的, 不靠谱, 运行几个小时就挂了. 

突发奇想, 在windows上用curl或者wget之类的工具, 实现无限下载删除. (如果担心硬盘的话, 可以用内存虚拟一块硬盘出来). 

从这里下载curl windows版, https://curl.se/windows/ , 保持文件结构, bin/include/lib之类的所有文件夹都留着保持不动, 不然加载不出依赖会报错. 然后写个简单的批处理: 

@echo off

:S

curl --output D:\1.iso https://download.microsoft.com/download/3/B/D/3BD9DD65-D3E3-43C3-BB50-0ED850A82AD5/SQLServer2012SP1-FullSlipstream-ENU-x64.iso

del /f /s /q D:\1.iso

del /f /s /q D:\1.iso

goto S

 

文件大小 3.63 GiB. 

*注意curl是单线程的. 可以多开实现满速. 

星期一, 十月 03, 2022

155 google chrome 浏览器便携化的一个方法, 可以设置成默认浏览器打开, 并且userdata不乱跑

原理还是白嫖paf, 只不过我找了个vbs脚本设置portable.exe为默认浏览器. 

1, 首先去https://portableapps.com/de/apps/internet/google_chrome_portable下载一个paf.exe结尾的文件. 用7zip等工具把它解压出来, 得到other app 7ztemp等文件夹, 和GoogleChromePortable.exe文件, 这里只保留 app文件夹+GoogleChromePortable.exe. 

2, 从这里https://gist.github.com/winhelponline/057064a1dadb3eb9b0aa2b6f05a0331a下载一个chromeportable.vbs, 和 GoogleChromePortable.exe 放在一起. 再在这里新建个Data文件夹, 这样文件夹结构就是

┌─ GoogleChromePortable.exe

├─App

    ┌─AppInfo

    ├─Chrome-bin

    └─DefaultData

├─Data

└─chromeportable.vbs

3, 从https://www.iplaysoft.com/tools/chrome/获取离线安装包, 用7zip等工具把它解压出来, 得到chrome.7z, 再解压得到chrome-bin, 把它放到App文件夹底下. 

4, 现在双击运行chromeportable.vbs, 直接点确定就行. 

5, 打开GoogleChromePortable.exe一次, 正常使用. 

6, 排查从其它地方打开的链接, 能否调起GoogleChromePortable.exe. 

7, 排查 %LOCALAPPDATA%\Google\Chrome\User Data 是否存在.

完成!


重点是vbs设置为默认浏览器, 而且也不能用chrome里的设置默认, 否则userdata会回到 %LOCALAPPDATA%\Google\Chrome\User Data 中


为了防止误点到静默安装包, 或者误点到chrome主程序, 可以在%LOCALAPPDATA%下建一个空文件, 取名Google, 设置为只读, 实测静默安装包不会释放文件, chrome.exe也无法启动. 


!每次升级需要手工下载安装包解压后放入App文件夹. 

星期六, 十月 01, 2022

154 clash for windows 和 adguard home 的冲突问题: 拦截的广告域名被拉进了代理并解析成功

由于clash mini出现的各种小问题, 最终还是转向了clash for windows. 这屎山electron应用... 不过看日志确实方便, 方便我找出那些广告和收集隐私的域名. 

前面折腾了一个勉强能用的便携版, 也算不错. 

但是我本地有个adguard home, 就搭在路由器上, 也是我内网中唯一的dns. 上游dns是国内的ip doh, 目前没有劫持和污染. 


机场规则乱七八糟, 这一看就是从网上订阅规则合并的: 

    - 'DOMAIN,dl.google.com,全球直连'

    - 'DOMAIN,dl.l.google.com,全球直连'

    - 'DOMAIN,update.googleapis.com,全球直连'

    - 'DOMAIN,fonts.googleapis.com,全球直连'

    - 'DOMAIN,fonts.gstatic.com,全球直连'

瞎写是吧? 照这么用, 特么十次里面得有八次字体是方块. 于是我就这么写mixin: 

mixin:

  dns:

    enable: true

    listen: 127.0.0.1:5335

    nameserver:

      - 192.168.10.1:5335

  rules:

      - 'DOMAIN-SUFFIX,local,DIRECT'

      - 'IP-CIDR,192.168.0.0/16,DIRECT,no-resolve'

      - 'IP-CIDR,10.0.0.0/8,DIRECT,no-resolve'

      - 'IP-CIDR,172.16.0.0/12,DIRECT,no-resolve'

      - 'IP-CIDR,127.0.0.0/8,DIRECT,no-resolve'

      - 'IP-CIDR,100.64.0.0/10,DIRECT,no-resolve'

      - 'IP-CIDR6,::1/128,DIRECT,no-resolve'

      - 'IP-CIDR6,fc00::/7,DIRECT,no-resolve'

      - 'IP-CIDR6,fe80::/10,DIRECT,no-resolve'

      - 'IP-CIDR6,fd00::/8,DIRECT,no-resolve'

      - 'GEOIP,CN,DIRECT'

      - 'MATCH,🐟 漏网之鱼': 

mixin的功能就是覆盖机场的配置, 在这段代码中, 覆盖了机场的dns和rule两个节点. 我指定dns服务器为我自己内网路由器的5335端口. 写了一些本地局域网直连(DIRECT)的规则. 比较重要的是最后两行, cn分流直连, 剩余的交给漏网之鱼select选择器. 

结果他妈的cfw在adguardhome响应了NXDOMAIN(域名不存在)后, 自己跑去连上代理给我了解析域名, 代理可不管你本地拦不拦截, 全部都会解析. 妈的那我还去个锤子广告? 

于是乎, 把目前上网的工具试了一圈, 没一个好使的, v2rayN一样会把拦截域名拉到代理里解析掉; v2rayA是网页GUI, 做得不错, 但也会拉到代理里; clashy根本没有mixin; HMBSbige / ShadowsocksR-Windows 是.net写的, 占用内存150M+, 不想用, 而且也会拉入代理; netchx那个还行, 但是加上千个cnip路由, cpu直接起飞; 其它的工具都已经很久没有维护了, 要么就得用2019年就停更的 shadowsocksrr / shadowsocksr-android. 

这几年的工具都有一个机制, 它会认为我这些 servfail/nxdomain/refused/空noerror 等等的响应全都是污染, 于是作为后备方案, 工具就会尝试通过代理解析域名... 

后来经高人指点, 得到了一个简单有效又另类的方法, 效果和nxdomain响应差不多. 

在 adguard home - 设置 - DNS设置 - DNS 服务配置 - 拦截模式 这里, 设置成 自定义IP. 在IPv4这一栏填成: 255.255.255.255, 如图: (截图是255.0, 但是实际测试发现255更好, 图片懒得重新截了...)

回到cfw, 在mixin里match的上方加一行规则, 如图: (同上, 懒得重新截图了)

 - 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'

最后面match跟的是Select选择器, 每个机场可能都不一样, 自己改一下就好. 重启cfw之后, 来看看dns解析情况(刚才为了截图, 解析了域名, 浏览器有缓存, 所以下面我换了个测试域名): 
adguard home里面拦截的域名终于被mixin的规则干死了. REJECT, 哈哈!

浏览器访问被adguard home拦截的域名时, 会立即报这些错: 
ERR_CONNECTION_RESET
ERR_CONNECTION_ABORTED
ERR_CONNECTION_CLOSED
HTTP ERROR 502

找了找, 网上目前没有clash for windows和adguard home之间存在问题的文章, 所以发出来帮助大家. 感谢大佬, 开心😄

20221003更新: 实际测试选用255.255.255.255更好, 懒得截图了.. 
adguard home 返回IP改为: 
255.255.255.255
mixin:  
- 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'
mixin这破东西, 一定要注意对齐啊...

关于IP-CIDR的转换, 参见: https://www.rocschool.com/tool/ipcidr/

星期四, 九月 29, 2022

153 使用 yaP 制作 Clash for Windows 便携版, 配置随着打包即可带走

cfw这个东西真的是一言难尽, 你说它好用吧, 它是electron写的, 性能又差, 占用内存; 和.NET程序一起, 在我的鄙视链中.. 你说它不好用吧, 它又很强大... cfw本身带有便携版, 但是 %appdata%\clash_win\ 会有缓存文件. 

yap是什么? 它是一个可扩展的便携软件制作工具. 
原理很简单, yap没有hook路径之类的, 通过自己写ini, 实现启动前的环境准备(比如设置环境变量, 准备文件, 写入注册表等等), 再等到指定进程退出以后, 再继续环境处理(比如回收配置文件到某个目录下, 删注册表, 清理文件文件夹等等), 虽然2019年期就停更了, 但是扩展性很好. 就是个小小启动器, 还支持参数用指定密码加密, yap就相当于两个cmd. 

portableapps见过吧, yap和那个类似, portableapps还需调用NSIS, 虽然说很高级, 但我的需求就是简单地写个cfw的便携版ini, 不需要那么繁琐的准备环境和各种依赖. 

yap和pa的文件结构类似, 就一个启动器exe和一个ini文件. 所以最重要的也就是这个ini的内容了. 下面我把我自己写的ini贴出来. 

把cfw放入app文件夹, 以保证 \App\Clash for Windows.exe 存在. 后续更新只需要自己清掉app文件夹里的文件, 放入新版本即可.

如果clash需要重启, 手动退出clash重新进. 由于yap自身缺陷, 只能识别标题是否存在, 无法做到检测进程.exe是否重启. 如果clash已经重启了, 没事, 手工退出再重新进一下就好. 

; configuration file for yaP v0.7.x (http://rolandtoth.hu/yaP/)

; application name: Clash for Windows

; website: https://github.com/Fndroid/clash_for_windows_pkg/releases


[GENERAL]

application = {YAPROOT}\App\Clash for Windows.exe

; commandline = 

workdir = {YAPROOT}\App\

!waitprocess = Clash for Windows


[BEFORE]

dir = %userprofile%\.config\clash\ :: {YAPROOT}\Data\

dir = %appdata%\clash_win\ :: {YAPROOT}\Data\cache\


[AFTER]

-dir = {YAPROOT}\Data\logs\

-file = %temp%\*.tmp.ico

-file = {YAPROOT}\App\debug.log

-regkey = HKCU\SOFTWARE\Classes\clash\

其中;是注释, 其它内容很好理解, 就是在每次cfw结束之后回收配置文件至 软件目录\Data\下, 清理缓存.
网站也对语法有详细的文档介绍. https://yap.rolandtoth.hu/#configuration 还有各类模板可供参考: https://yap.rolandtoth.hu/#examples

下载地址: https://yap.rolandtoth.hu/

软件启动前和退出后, 有文件读写操作, 所以如果是像 钉钉 那样的屎山, 用这个yap没有太大意义. 

星期四, 六月 30, 2022

152 红米k20pro 从MIUI刷至魔趣, 并解决 wifi无法开启卡住 取消类原生流量和wifi有x有叉 GPS能搜到信号但无法定位 的问题

1, 先刷入官方底包, 从MIUI网站检查符合魔趣安卓版本号的版本. 比如魔趣这个包是安卓10, 你也得从官网下载安卓10的底包, 不能跨版本, 否则可能有GPS无法定位、wifi无法打开等各类奇葩情况. 也可以从https://xiaomifirmwareupdater.com/firmware/raphael/ https://downloads.akhilnarang.dev/MIUI/raphael/

下载firmware和vendor, 将驱动升至符合魔趣安卓版本号的版本. 
如果用的是firmware zip包, 在刷入之前, 记得在TWRP-"挂载"里面, 挂载firmware分区!  vendor同理. 

2, 如果刷入官方底包, 那还需要重新刷入TWRP recovery. 

3, 安装魔趣系统刷机包. 

4, 进入TWRP-清除, 格式化Data分区. TWRP-高级-取消强制加密, ✔删除DM校验 ✔取消强制加密 这两个都勾上执行. 重启至系统, 进去之后, 过完新手设置引导, 重启至Recovery. 

5, 检查/data/system/、/data/app/、/data/data/ 之类的分区, 文件名和文件夹名是否被加密. 如果操作正确, 文件名都会显示正常. 

6, 继续在TWRP中刷入Magisk最新版本, 重启至系统, 安装app. 安装后进入设置, 只勾选Zygisk, 底下的遵守排除列表不勾, 然后隐藏magisk. 重启至系统. 

7, 在magisk的设置里, 不勾选遵守排除列表, 直接进入排除列表, 勾上银行类支付类等各类要排除的软件. 每个软件都要点开把所有项目都勾选上. 

8, 继续在magisk安装Shamiko的zip包(以对抗银行类软件). https://zhuanlan.zhihu.com/p/470468650, 装完重启即可正常打开银行类软件. 

9, WIFI/流量信号有小x: 

adb devices

adb shell settings put global captive_portal_http_url http://connectivitycheck.platform.hicloud.com/generate_204

adb shell settings put global captive_portal_https_url http://connectivitycheck.platform.hicloud.com/generate_204

adb shell settings put global default_captive_portal_http_url http://connectivitycheck.platform.hicloud.com/generate_204

adb shell settings put global default_captive_portal_fallback_urls http://connectivitycheck.platform.hicloud.com/generate_204

分四行执行. https_url的值也不能为https, 这一版rom如果改https的网址, 重启后电信APN(接入点)会消失, 无法用流量联网. 另外也可以用"CaptiveMgr"进行修改, 需要root权限, 注意也不要勾选https的选项, 否则重启后同样电信APN会消失. 

 

*在TWRP备份恢复分区误操作, 无脑恢复了这些分区 msadp logo keymaster xbl cnmlib splash dsp apdp dtbo EFS logfs abl bluetooth fsg Persist cnmlib64 Boot Persist_backup tz devcfg hyp 导致无限重启, 即使重刷zip刷机包也不行: 
从这里下载tgz线刷包, 解压出来, 用fastboot+miflashpro的形式刷入. miflashpro也可以从第三方检索页面查询下载
我尝试恢复之前魔趣的data分区, 系统无限重启, 貌似twrp备份没什么用. 还是钛备份吧, 虽然有点麻烦…

星期一, 四月 25, 2022

151 钉钉 通过json下载最新版本的离线包

给同事下载个钉钉, 从官网正常下载发现是个下载器...

网上搜了一下, 发现这个博主的方法能够解决. 只要接口不变, 可以一直获取最新版本. 

https://im.dingtalk.com/manifest/new/website/vista_later.json

看URL节点里面的地址即可获取exe完整包或者zip的完整包(解压就行). 

臃肿又卡顿的软件😂


有人说, 直接用下载器下载安装不就好了么?

给别人做好系统安装软件的时候, 不一定有网-_-

星期五, 一月 28, 2022

150 vivaldi浏览器 登录谷歌帐号提示 "此浏览器或应用可能不安全"

由于centbrowser已经一年多没有更新, 我已经放弃了, 进而使用内存占用和资源消耗大一些的vivaldi. 

浏览器设置完了之后, 谷歌帐号无法登录, 提示"此浏览器或应用可能不安全", 英文错误提示是"This browser or app may not be secure".

-有人说通过vivaldi_proxy.exe打开浏览器登录, 我试了无效. 

-还有人说禁用所有扩展之后再登录, 同样无效. 再说这是vivaldi浏览器, 一个网页没权限获得我的扩展安装列表, 而且这些扩展我以前也一直用. UA也就升了个版本号, 看不出什么. 识别浏览器指纹就更不太可能了. 

找了很多帖子, 发现还是设置的问题. 

设置 - 隐私 - 谷歌扩展 - 加密令牌, 把这个勾上, 重启一下浏览器再登录就行了, 另外如果 应用商店 没有勾选的话, 也勾上.

原贴出处: https://vivaldi.club/d/14118 - ikali的评论


149 Vivaldi浏览器 两种方法设置默认为便携版 Userdata随软件目录走

首先排除 快捷方式+参数, 如果由其它软件调起系统默认浏览器, 那使用 快捷方式+参数 没有任何意义. 

其实vivaldi的安装包是有便携版安装的功能, 选"独立版本模式安装"这项安装就好了. 

=================

如果已经安装好的, 按照下图把userdata移动过来放好就行. 

放好之后, 在application底下新建一个空文件, 命名为stp.viv
这就标识为便携版本了. 软件会自动识别刚才你移动过来的userdata.

星期二, 一月 25, 2022

148 话筒无法出声也没有图标, 以及win10设置(新控制面板)崩溃: SystemSettings.exe - 系统错误: 系统在此应用程序中检测到基于堆栈的缓冲区溢出。

标题有点长. 两个问题.

最近瞎几把禁用后台服务, 也就是services.msc, 结果把系统干出两个问题, 研究了五十多分钟, 终于研究出方法了. 一到晚上我要睡觉了, 就给我出幺蛾子...

(1) 话筒无法出声也没有图标

(2) win10设置(新控制面板)崩溃: SystemSettings.exe - 系统错误: 系统在此应用程序中检测到基于堆栈的缓冲区溢出。

------------------

(1) 今天晚上玩英雄联盟日服, 跟队友开语音没有声音. 对方头像小绿圈亮, 但我听不到对方的语音, 我说话的时候头像小绿圈也不亮.
以为是游戏的问题, 但我顺手试了一下浏览器的在线测试麦克风, 结果发现...托盘的话筒图标不出来, 在线测试也测不到声音, 设备列表有, 但是会提示无权限之类的错误. 

(2) 打完游戏后, 照着网上的方法打开 设置 - 隐私 - 麦克风, 直接报(2)的错误, 点确定然后设置界面就闪退了. 我很清楚这是我自己干的事, 因为系统刚装上的时候没有这些幺蛾子. 

问题主要出在这个服务(camsvc是服务名, 可以直接用sc命令启用, 或者在services.msc里面找功能访问管理服务), 

camsvc 功能访问管理器服务

给我折腾到晚上两点半, 设置成 手动+启用 之后用浏览器测试立马就好了. 设置 - 隐私 - 麦克风 也能正常进去了. 

以后再也不瞎几把乱禁服务了. 不过win10有些服务是真踏马没卵用. 


再说一说系统目前的服务如何备份吧, 有两个方法.
一是直接导出本地服务. 打开服务界面之后, 右击最左侧栏的 服务(本地) - 导出列表. 这样就能导出一个表格, 出了问题可以一个个服务去核对.
二是用这个bat, 很早以前不知道从什么地方弄来的, 看代码大概意思就是, 获取服务列表, 保存其状态并生成恢复用的bat, 注意这个bat不保证能用.

@echo off

rem  get current date and time

for /f "tokens=1, 2, 3, 4 delims=-/. " %%j in ('Date /T') do set FILENAME=srv_%%j_%%k_%%l_%%m

for /f "tokens=1, 2 delims=: " %%j in ('TIME /T') do set FILENAME=%FILENAME%_%%j_%%k.bat


rem get all service name

sc query type= service state= all| findstr /r /C:"SERVICE_NAME:" >tmpsrv.txt

echo Save Service Start State In %FILENAME%

rem save service start state into batch file 

rem


echo @echo Restore The Service Start State Saved At %TIME% %DATE% >"%FILENAME%" 

echo @pause >>"%FILENAME%"


for /f "tokens=2 delims=:" %%j in (tmpsrv.txt) do @( sc qc %%j |findstr  START_TYPE >tmpstype.txt &&  for /f "tokens=4 delims=:_ " %%s in ( tmpstype.txt) do @echo sc config  %%j start= %%s >>"%FILENAME%")

echo @pause >>"%FILENAME%"


del tmpsrv.txt

del tmpstype.txt