繁体   English   中英

批量删除用户注册表

[英]Deleting users registry with batch

我最近开始在一所学校工作,我们每两年从所有计算机上擦除一次用户帐户。 我们为所有学生使用永久帐户,以减少HDD的磨损,减少网络负载并减少启动时间。 为了删除用户文件夹,我们使用以下脚本:

@echo off
cd \.
cd \Users\
dir *20**
echo Users to be deleted
pause
@echo on
for /D %%f in (*20**) do rmdir %%f /s /q
pause
exit

唯一的问题是,当多个年级使用同一台计算机时,上一年将其个人资料下载到该计算机上的学生无法登录,因为他们的注册表仍然存在于计算机上。 我将如何删除它们的注册表项(如果可能,请批量处理),这样不会出现任何注册表冲突?

如果这一切发生变化,我们所有的计算机都将运行Windows 10。 TIA

分享有关此类内容的经验:我有点用域帐户但本地配置文件来管理Windows XP计算机池。

我们从漫游配置文件开始,但是忙得不可开交,因此我们决定默认情况下切换到本地配置文件(通过更改某些系统注册表项)。 存在销毁损坏的漫游用户配置文件的问题,因此以后将它们创建为本地配置文件。

在这种情况下,删除给定用户的%USERPROFILE%中的所有内容将删除文件NTUSER.DAT ,从而删除其所有设置/注册表项(但没有再次连接的权利)

此后,如果学生使用不存在的配置文件进行连接,则Windows将创建一个从“ Default User配置文件克隆的标准配置文件。

如果在用户成功登录后未重新启动计算机,则此方法不起作用: NTUSER.DAT仍然存在,而其他文件则没有,这可能是有问题的,也可能是您遇到的问题。

我会做什么:

  • 远程重新启动所有计算机以解锁NTUSER.DAT文件
  • 对于所有机器,远程销毁Users子目录(您只需要一个包含所有机器的for循环,并访问如下驱动器: \\\\host\\C$\\Users (前提是Users位于C驱动器上)

如果要删除远程PC上某个学生的注册表项,请将此脚本保存到test.bat ,然后从open Admin Cmd Prompt运行它。 用您自己的PC_name用户值替换。 您可以在用户名(即"user=.*20.*"使用通配符来删除所有名称(例如AshleyPalm-2016)的用户的Reg数据。 这对我来说很有用。 让我知道是否出现任何错误:

@echo off
setlocal enabledelayedexpansion
set "PC_name=remote_PC_name" & set "user=.*20.*" & echo/
for /f "usebackq tokens=*" %%H in (`reg query \\%PC_name%\HKEY_USERS`) do (
    set "val=\\%PC_name%\%%H\Volatile Environment"
    for /f "usebackq tokens=3 skip=1" %%K in (`reg query "!val!" /v USERNAME 2^>nul`) do (
        echo %%K | findstr /r /e /c:"%user%" >nul && (echo Deleting %%K: %%H & reg delete \\%PC_name%\%%H )))
exit /b

在此处了解更多信息: Reg命令 (MS), FINDSTR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM