Мне нужно создать сценарий .VBS для сброса пароля локального администратора Windows на большой группе компьютеров. Моя проблема в том, что некоторые из наших сайтов переименовали учетную запись администратора по соображениям безопасности. Кто-нибудь имеет скрипт, который изменяет пароль учетной записи администратора на основе SID исходной учетной записи администратора?Сбросить пароль для переименованной учетной записи администратора
ответ
Используя тот факт, что SID локального администратора всегда заканчивается -500:
strComputer="." ' local computer by default
Set objUser=GetObject("WinNT://" & strComputer & "/" & GetAdminName & ",user")
objUser.SetPassword "New local admin password"
objUser.SetInfo
Function GetAdminName
'This function was written using information from Table J.1 from the Windows XP resource Kit
'http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prnc_sid_cids.asp
Set objNetwork = CreateObject("Wscript.Network") 'get the current computer name
objComputerName = objNetwork.ComputerName
Set objwmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & objComputerName)
qry = "SELECT * FROM Win32_Account where Domain = '" & cstr(objComputerName) & "'"
'set query, making sure to only look at local computer
For Each Admin in objwmi.ExecQuery(qry)
if (left(admin.sid, 6) = "S-1-5-" and right(admin.sid,4) = "-500") then 'look for admin sid
GetAdminName = admin.name
end if
next
end Function
Существует инструмент, плавающий вокруг где-то под названием LookupAccountName (с источником!), Который, учитывая SID встроенного администратора, даст вам свое имя.
Возможно, вам удастся написать код на C++, чтобы вытащить этот код достаточно хорошо.
Как Иисус говорит, я не думаю, что вы можете сделать это только с сценариев Windows, вы можете использовать его что-то скачать и выполнить его:
- Пользовательское приложение, которое вызывает LookupAccountSid (S-1- 5-домен-500 SID или перечисление администратор группа) + NetUserSetInfo для сброса пароля (требуется для запуска этого как администратор)
- http://home.eunet.no/pnordahl/ntpasswd/ (Сброс при загрузке)
- дампа САМИХ хешей и взломать пароль (Cain, Иоанн Ripper, L0phtCrack и т. Д.)
@ ответ DmitryK это хорошо, и я не знаю ни одной из этих вещей. Но я знаю, что такие вещи обычно чище в PowerShell, поэтому я портировал его.
Например, вся GetAdminName
функция может быть записана:
$adminName = (gwmi win32_account | ? { $.SID.StartsWith('S-1-5-') -and $.SID.EndsWith('-500') }).Name
(Добавить опцию -ComputerName
в gwmi
вызова, чтобы сделать это на сервере.)
Остальное становится:
$user = ([ADSI]"WinNT://$($env:COMPUTERNAME)/$adminName,User") $user.SetPassword('xxx') $user.SetInfo()
(ap при необходимости, соответствующее имя компьютера).
+1 для ясности и объяснения именно того, что вам нужно. Не могу с тобой помочь :( –