无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: lhc0688
打印 上一主题 下一主题

[求助] 想写一个新建系统账户的批处理,请指教:

  [复制链接]
31#
 楼主| 发表于 2019-9-6 23:07:56 | 只看该作者
做这个批处理的初衷,就是发现系统装好后(默认administrator账号+空密码登陆),有的使用者会新建账号并设置密码,因为两个账号登陆时候要选择,所以又会禁用掉administrator,这样如果新建的账号是user权限,那后面就没法再启用admin。。。
回复

使用道具 举报

32#
发表于 2019-9-6 23:08:12 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

33#
发表于 2019-9-6 23:15:56 来自手机 | 只看该作者
lhc0688 发表于 2019-9-6 23:07
做这个批处理的初衷,就是发现系统装好后(默认administrator账号+空密码登陆),有的使用者会新建账号并设 ...

完美解决判断方案就是 判断 C:\User目录下,是否存在用户名文件夹,这样就不会有那个用户名不存在的提示了。由于时间关系,我就不搞了 dir /b C:\User^|find /i %用户名%
回复

使用道具 举报

34#
发表于 2019-9-6 23:27:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

35#
 楼主| 发表于 2019-9-6 23:45:38 | 只看该作者
两段提权脚本刚测试了下,好像没提权成功,直接运行批处理还是会提示拒绝访问。
回复

使用道具 举报

36#
发表于 2019-9-6 23:53:47 | 只看该作者
  1. [url=home.php?mod=space&uid=336905]@echo[/url] OFF
  2. color 0a
  3. REM --> 检查获取管理员权限
  4. >nul 2>&1 "%windir%\system32\cacls.exe" "%windir%\system32\config\system"
  5. if %ERRORLEVEL% EQU 0 Goto :gotAdmin
  6. echo 请求管理员权限...
  7. mshta vbscript:createobject("shell.application").shellexecute("%~s0","","","runas",1)(window.close) & goto :eof
  8. :gotAdmin
  9. pushd %cd% & cd /d "%~dp0"
  10. REM --------------------------------------
  11. title ★ 检查获取管理员权限 ★
  12. echo 你已经具备管理权限了。。。
  13. pause
复制代码


这个是我朋友发给我的提权处理,不知道是否能帮到你。
回复

使用道具 举报

37#
发表于 2019-9-6 23:55:45 来自手机 | 只看该作者
quya 发表于 2019-9-6 23:27
没意思判断这个

实在要判断也是 net user %username% /add ^|find "已存在"可靠些,当然只对中文版有 ...

net user %username% /add ^|find "已存在"
这不矛盾? 存不存在都在添加用户,叫判断?
回复

使用道具 举报

38#
 楼主| 发表于 2019-9-7 00:02:27 | 只看该作者
Windows Registry Editor Version 5.00
;
;用户帐户控制: 用于内置管理员账户的管理员批准模式,改为"已启用"、在管理员批准模式下运行所有管理员,改为"已禁用"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"FilterAdministratorToken"=dword:00000001
"EnableLUA"=dword:00000000
-----------------------------------------------------
这样可以将当前用户提升为管理员(运行cmd时候,窗口标题显示为 管理员)
奇怪,是不是我对提升权限的理解有歧义?
回复

使用道具 举报

39#
发表于 2019-9-7 00:11:02 | 只看该作者
总觉得批处理在字符串上面很烦琐,所以十年前就用VBS来做了这个功能,网上到处都可以搜到这些代码,如果有兴趣的话也可以放上来给你参考。
回复

使用道具 举报

40#
 楼主| 发表于 2019-9-7 00:14:41 | 只看该作者
测试发现,用这个新建用户批处理,在win7下新建用户,运行cmd不是管理员,需要刚才那段reg;但在win81下新建用户,运行cmd直接就是管理员,不知道是什么情况。
回复

使用道具 举报

41#
 楼主| 发表于 2019-9-7 00:20:43 | 只看该作者
好像搞明白了,这个win81做精简的时候应该是优化过管理员权限,win7没有。
这样的话就简单了,win7也提前加入优化就可以了。
回复

使用道具 举报

42#
发表于 2019-9-7 08:09:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

43#
发表于 2019-9-7 14:17:46 | 只看该作者

  1. Dim WshShell,ver,windir,val(500,3),reg,srv_dict,firewall_dict
  2. Set WshShell=WScript.CreateObject("WScript.Shell")
  3. Set objFSO = CreateObject("Scripting.FileSystemObject")
  4. Set objWMIService = GetObject("winmgmts:\\.")
  5. Set Shell=CreateObject("Shell.Application")
  6. Set srv_dict=CreateObject("Scripting.Dictionary") '需调整的服务
  7. Set firewall_dict=CreateObject("Scripting.Dictionary")'需禁止接连网络的程序
  8. Set objRegistry=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
  9. Const HKEY_CLASSES_ROOT = &H80000000
  10. Const HKEY_CURRENT_USER = &H80000001
  11. Const HKEY_LOCAL_MACHINE = &H80000002
  12. tmp1="用户名"
  13. tmp2="用户密码"
  14. tmp1=trim(tmp1):tmp2=trim(tmp2)
  15. if ver>5.5 then '如果是Win78则试写注册表以检查权限,如果没有权限则以管理身份重新运行
  16.     If WScript.Arguments.length = 0 Then
  17.         Shell.ShellExecute "wscript.exe", Chr(34) &  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
  18.         WScript.quit
  19.     End If
  20. '如果是78则打开管理员使用应用.
  21.     SetRegACL("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System")
  22.     WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA",0,"REG_DWORD" '是否开启UAC
  23.     WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop",0,"REG_DWORD" '桌面是否变黑
  24.     WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin",0,"REG_DWORD" '通知强度级别
  25. end if
  26. msgbox tmp1
  27. user tmp1,tmp2'添加用户:
  28. '设置自动登陆
  29. 'WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName",tmp1,"REG_SZ"
  30. 'WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDefaultPassword",tmp2,"REG_SZ"
  31. 'WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon",1,"REG_DWORD"
  32. 'WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ForceAutoLogon",1,"REG_DWORD"
  33. Wscript.Quit



  34. Function user(username,password) '没有用户就新建/设置密码,并永不过期/加到超级组
  35.     dim mo,ObjServices
  36.     Set objWMI = GetObject("Winmgmts:\\.\Root\Cimv2")
  37.     Set ObjServices =objWMI.ExecQuery("Select * From Win32_Service")
  38.     on error resume next
  39.         For Each mo In ObjServices
  40.             If mo.Name = "LanmanWorkstation" Then
  41.                 mo.ChangeStartMode("Automatic")
  42.                 user=mo.Start()
  43.                 exit for
  44.             End if
  45.         Next
  46.         Set objWMI = nothing
  47.         Set ObjServices = nothing
  48.         debug("检查" & username & "权限和密码是否正确")
  49.         Set wbemServices = Getobject("winmgmts:\\.")
  50.         Set wbemObjectSet=wbemServices.execquery("select name from win32_userAccount")
  51.         user=""
  52.         For Each mo In wbemObjectSet
  53.             if mo.name=username then
  54.                 user=mo.name
  55.                 exit for
  56.             end if
  57.         Next
  58.         err.clear
  59.         Set wbemServices=GetObject("WinNT://.")   '得到adsi接口,绑定
  60.         if err.number<>0 then
  61.             debug("工作站服务未正常运行,无法对用户进行操作,本操作被跳过")
  62.             err.clear
  63.             user=username
  64.         end if
  65.         If user = "" Then '无此用户则建立,有则取得句柄
  66.             Set wbemObjectSet=wbemServices.Create("user",username) '建立用户
  67.         Else
  68.             Set wbemObjectSet = GetObject("WinNT://./"&username)'得到用户
  69.         End If
  70.         wbemObjectSet.SetPassword password      '设置密码
  71.         wbemObjectSet.Put "UserFlags", &H10201'设置密码永不过期
  72.         wbemObjectSet.accountdisabled=false    '设置账号不禁用
  73.         wbemObjectSet.SetInfo               '保存
  74.         user="失败."
  75.         Set wbemServices = GetObject("WinNT://./Administrators")
  76.         Set wbemObjectSet = GetObject("WinNT://"&username)'得到用户
  77.         wbemServices.Add(wbemObjectSet.ADsPath)
  78.         user="搞定"
  79.     On error resume next
  80.     Set wbemServices= nothing
  81.     Set wbemObjectSet= nothing
  82. End Function


  83. Function SetRegACL(reg_path) '为当前用户设置注册表权限
  84.     Set ini_file = Nothing
  85.     dim tmp1,tmp2,tmp3
  86.     tmp3=WshShell.ExpandEnvironmentStrings("%temp%") & "\setacl."
  87.     tmp2="\if":tmp1=reg_path:if right(reg_path,1)<>"" then tmp1=reg_path & ""
  88.     on error resume next
  89.           objFSO.deletefile tmp3 & "ini",true
  90.           tmp2=WshShell.RegRead(tmp1)
  91.     on error goto 0
  92.     if tmp2="\if" then SetRegACL="没找到注册表" & reg_path :Exit Function
  93.     Set ini_file = objFSO.OpenTextFile(tmp3 & "ini",8,True,0)
  94.     tmp2=tmp1
  95.     tmp2=replace(tmp2,"HKEY_LOCAL_MACHINE","MACHINE",1,-1,1)
  96.     tmp2=replace(tmp2,"HKEY_CLASSES_ROOT","CLASSES_ROOT",1,-1,1)
  97.     tmp2=replace(tmp2,"HKEY_CURRENT_USER","CURRENT_USER",1,-1,1)
  98.     tmp2=replace(tmp2,"HKEY_USERS","USERS",1,-1,1)
  99.     tmp2=replace(tmp2,"HKEY_CURRENT_CONFIG","CURRENT_CONFIG",1,-1,1)
  100.     ini_file.WriteLine "[Version]" & chr(13) & "Signature = ""$Chicago$""" & chr(13) & chr(13) & "[Registry Keys]"
  101.     ini_file.WriteLine chr(34) & tmp2 & chr(34) & ", 0, "& chr(34) & "O:BA" & chr(34)
  102.     Set ini_file = Nothing
  103.     WshShell.Run "secedit /configure /db " & tmp3 & "sdb /cfg " & tmp3 & "ini /quiet",0,true '先获得所有权
  104.     objFSO.deletefile tmp3 & "ini",true
  105.     Set ini_file = objFSO.OpenTextFile(tmp3 & "ini",8,True,0)
  106.     ini_file.WriteLine tmp1 & " [1 5 7 11 14 17 21]"
  107.     Set ini_file =  Nothing
  108.     WshShell.Run "regini " & tmp3 & "ini",0,true '再设权限
  109.     objFSO.deletefile tmp3 & "ini",true
  110.     SetRegACL="正常完成"
  111. End Function
复制代码
回复

使用道具 举报

44#
 楼主| 发表于 2019-9-7 14:49:28 | 只看该作者

这个太强大了,不过我调用那两个命令方式好像也可以,访问注册表权限也没问题。
回复

使用道具 举报

45#
发表于 2019-9-11 08:05:00 来自手机 | 只看该作者
vbs要是掌握的好,用vbs的话,需要躲避的符号就比批处理少多了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-2 00:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表