根据值删除父注册表项

时间:2015-01-27 14:15:07

标签: batch-file registry profile

我知道这里有其他主题有相同的目标,但不要认为有一个批处理文件格式,所以这里有:

我在批处理中完成了一个简单的reg查询,以查找包含用户配置文件的注册表项。

set /p username= please enter the user name ?
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /f "C:\users\%username%" /d /s /e

这找到了我正在寻找的确切键

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ S-1-5-21-1908996837-4138030977-3423296585-49875

然后我想要删除该密钥及其中的所有密钥,但是reg query命令的输出实际上给出了3个不同的结果,这使我很难在for循环中使用。

这是它实际输出到文本文件的内容

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ S-1-5-21-1908996837-4138030977-3423296585-49875

     

ProfileImagePath REG_EXPAND_SZ C:\ Users \ Mr Smith

     

搜索结束:找到1个匹配。

所以我的下一行是一个for循环,很明显,基于上面命令的输出,它并没有完全做我想要的

for /F %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /f "C:\users\%username%" /d /s /e') do reg delete %%a /f

所以最终目标是执行此

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1908996837-4138030977-3423296585-49875" /va /f

但显然不知道并输入完整的密钥名称

由于

2 个答案:

答案 0 :(得分:0)

Net User命令行工具可以帮助系统管理员添加,删除或修改用户帐户......

Net User /?输出太简洁了,所以learn more

答案 1 :(得分:0)

很抱歉碰到一个旧帖子,但我有同样的问题。这是你的答案:

set /p targetUser=Please enter the user name: 

for /F "tokens=*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /f "C:\users\%targetUser%" /d /s /e ^| FIND /I "HKEY" ') do set "userRegKey=%%a"

reg delete "%userRegKey%" /va /f
相关问题