|
本帖最后由 sunsea 于 2022-10-24 15:41 编辑
需要一个来自Sysinternals Suite的工具psgetuid,在附件,放到批处理的同目录。以ANSI编码保存本批处理,并用管理员身份运行本批处理。这个批处理应该能对付Administrator改了名的情况,没有的话就不需要这么复杂,直接用4#的即可。删除当前用户是做不到的,在第一次登陆之前用户配置文件都没有创建,所以也没法针对性添加RunOnce。目前不知道批处理如何切换用户。
- @echo off
- pushd "%~dp0"
- setlocal ENABLEDELAYEDEXPANSION
- rem 按照Windows的SID规则,SID结尾是-500(0x1F4)的为内置管理员账户,而且会有且只有一个,如果有多的也能观察到-500结尾请告诉我
- reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /k /f "*-500"|findstr .-500$ > "%TEMP%\001.tmp"
- rem 没记错的话Windows应该不允许用户名中有空格,有请告诉我
- rem for没法嵌套解析,在解析的命令行中使用管道都会出现错误,如果有人有不用临时文件的办法请告诉我。
- for /f "usebackq delims=" %%i in ("%TEMP%\001.tmp") do psgetsid -nobanner %%~ni > "%TEMP%\001.tmp"
- for /f "usebackq tokens=1*" %%i in ("%TEMP%\001.tmp") do set admin_name=%%~nj
- del "%TEMP%\001.tmp"
- echo 检测到内置管理员用户名为!admin_name!。
- net user !admin_name! /active:yes
- pause
复制代码
|
|