Board logo

标题: [注册表类] 批处理怎样列出注册表中开机启动项? [打印本页]

作者: yeeboys    时间: 2016-10-12 09:18     标题: 批处理怎样列出注册表中开机启动项?

麻烦大家帮一下,谢谢。批处理怎样列出注册表中开机启动项?只要显示所有的开机启动项,即可
作者: yeeboys    时间: 2016-10-12 10:08

回复 1# yeeboys


    试过了,没找到
作者: pcl_test    时间: 2016-10-12 12:16

reg query /?
作者: GNU    时间: 2016-10-12 12:50

  1. @echo off
  2. reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  3. reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  4. pause
复制代码

作者: huyou96    时间: 2016-10-22 11:11

本帖最后由 huyou96 于 2016-10-22 20:52 编辑
  1. reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  2. reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  3. reg query HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  4. for /f "delims=" %%u in ('reg query HKEY_USERS') do reg query %%u\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
复制代码
【注】最后一条语句有瑕疵,但我水平有限无法完善,如有大虾能帮忙改进则十分感谢。
这个瑕疵遗憾是这样的:
先是遍历找到所有用户集合,但是某些用户下面是不存在“SOFTWARE\Microsoft\Windows\CurrentVersion\Run” 这样的子键路径分支的,换句话讲并非所有用户都拥有“SOFTWARE\Microsoft\Windows\CurrentVersion\Run” ,有的根本就不存在这样的注册表分支路径,所以如对这些用户进行查询,查询结果就会报错提示道:“错误: 系统找不到指定的注册表项或值。”——所以有必要在“do reg query”前先筛选过滤一下,把可能报错的先刨除,然后再执行查询,则结果就OK了。

补充:另外,如果楼主只在乎含有启动项的注册表分支而不是关注哪里有可能含有启动项,那么最后一条语句还需刨除的应该是该用户下有“SOFTWARE\Microsoft\Windows\CurrentVersion\Run” 这样的子键路径分支,但里面暂时未有启动键值,就是说Run子键下面除了默认值外空空如野,这样的结果也该先筛选出去吧?所以,也要再刨除这类里面不含任何启动项的那些,剩下的才是想要的。
作者: ygqiang    时间: 2016-10-22 15:31

回复 5# huyou96


    关注下。。。
作者: homepe    时间: 2016-10-28 12:29

回复 5# huyou96

加上 2>nul 过滤一下
作者: GNU    时间: 2016-10-31 11:19

for /f "delims=" %%u in ('reg query HKEY_USERS') do reg query %%u\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 2>nul




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2