4 заметки с тегом

windows

проверяем запущена ли служба в windows и если надо — запускаем

Ну, что же... бывают случаи, когда какая нибудь важная служба (сервис, service) тормознула, с разработчиком связи нет, а сам продукт является «черным ящиком». На выручку нам приходит очередной «костыльный» метод. Задача: в кроне шедулере сделать проверку, жива ли служба и если померла — стартануть.

в примере имя службы передадим параметром, в батничке накидаем двухстрочный скрипт, сначала проверим запущена ли служба и если нет — запустим.

Но, учтите, писать надо именно display name (выводимое имя).

net start | find /i %1 
if errorlevel==1 net start %1
 Нет комментариев    20   2 мес   service   windows   служба

поиск пользователей с заданным паролем в домене

Представьте ситуацию: новые пользователи заводятся в домен автоматически с заранее известным паролем, например password. Т. е. политика сложности пароля позволяет использовать простые пароли, хоть 111111. Смена пароля лежит на совести пользователя, а значит — не меняется. С помощью данного vbs-скрипта можно проверить какие пользователи используют словарные пароли

Dim adoCommand, adoConnection, strBase, strFilter, strAttributes 
Dim objRootDSE, strDNSDomain, strQuery, adoRecordset 
Dim strUser, strPassword, objDomain, objNS 
Dim iplus, iall 
Dim fso, f1 
Dim WshShell, Path 

Const ADS_SECURE_AUTHENTICATION = &H1 
Const ADS_USE_ENCRYPTION = &H2 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set f1 = fso.CreateTextFile("c:\testfile.txt", True) 
iplus = 1 
iall = 1 
Set objNS = GetObject("LDAP:") 
strPassword = InputBox("Введите пароль для проверки") 
Set adoCommand = CreateObject("ADODB.Command") 
Set adoConnection = CreateObject("ADODB.Connection") 
adoConnection.Provider = "ADsDSOObject" 
adoConnection.Open "Active Directory Provider" 
adoCommand.ActiveConnection = adoConnection 

Set objRootDSE = GetObject("LDAP://RootDSE") 
strDNSDomain = objRootDSE.Get("defaultNamingContext") 
strBase = "<LDAP://" & strDNSDomain & ">" 

strFilter = "(&(objectCategory=person)(objectClass=user))" 
strAttributes = "sAMAccountName" 
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" 
adoCommand.CommandText = strQuery 
adoCommand.Properties("Page Size") = 100 
adoCommand.Properties("Timeout") = 30 
adoCommand.Properties("Cache Results") = False 

Set adoRecordset = adoCommand.Execute 
Do Until adoRecordset.EOF 
    strUser = adoRecordset.Fields("sAMAccountName").Value 
    On Error Resume Next 
    Set objDomain = objNS.OpenDSObject("LDAP://" & strDNSDomain, _ 
        strUser, strPassword, ADS_SECURE_AUTHENTICATION) 
    If (Err.Number = 0) Then 
        On Error GoTo 0 
   f1.WriteLine(iplus & " User : " & strUser & vbTab & vbTab & " Пароль : '" & strPassword & "'") 
   iplus = iplus + 1 
    End If 
    On Error GoTo 0 
    adoRecordset.MoveNext 
   iall = iall + 1 
Loop 

f1.WriteLine("Всего проверено " & iall & " пользователей") 
f1.Close 
adoRecordset.Close 
adoConnection.Close 

Set WshShell = WScript.CreateObject("WScript.Shell") 
On Error Resume Next 
Path = "notepad c:\testfile.txt" 
WshShell.Run Path
 Нет комментариев    37   2 мес   ActiveDirectory   windows

lifehack для windows или как создать пользователя не заходя в систему

» — Деда, а ты сколько в войну сбил самолетов?

  • Три, внучек. Хотя как «сбил» — недозаправил»

Приходит как-то раз ко мне ноутбук Sony Vaio из новых. Жалуется на жизнь и хочет все начать с чистого листа, т. е. восстановиться из скрытого раздела. Казалось бы что может быть проще. Волшебная кнопочка Assist и понеслась. Но через некоторое непродолжительное время пациент выплюнул ошибку «не удалось завершить процесс установки» и кнопочку ok. По нажатию «ок» уходит в ребут.

Казалось бы что может быть проще — еще раз нажмем «Assist» и повторим операцию, ан нет — не работает кнопочка... Снимаем процесс — audit.exe, оказывается windows установщик считает что установился не полностью и проверить себя не может, хотя система полностью рабочая. После завершения вышеозначенного процесса успешно запускается оболочка, но после перезагрузки картина повторяется.

Гуглим. Объясняем через реестр, что система таки установлена до конца, проверять ничего не надо и давай уже работать. Ок, говорит система, вот у меня два пользователя: Administrator и Гость; первый отключен, а второй бесправен. Не беда, вспомним старый лайвхак:

Берем установочный диск с windows 7. После отрисовки графического инсталлятора жмем Shift+F10 попадаем в шелл:

D:\
copy D:\Windows\system32\sethc.exe D:\Windows\system32\sethc.exe.old
copy D:\Windows\system32\cmd.exe D:\Windows\system32\sethc.exe

отменяем установку и ребутим машинку. И вот перед нами знакомое приглашение windows 7, но теперь у нас есть бэкдорчик) Жмем shift 5 раз и, О чудо!, открывается шелл. Дальше дело техники:

net user Administrator /active:yes
net user User Password /add
net localgroup //Получим список групп и найдем как называется группа админов Administrators или Администраторы
net localgroup "Название_группы_админов" User /add
shutdown -r -t 0 -f

После перезагрузки логинимся либо под вновь созданной учеткой User либо под админом и видим, что винда все-таки встала коряво....

Мораль: гуглим, Alt+f10 при загрузке — recovery mode для Sony Vaio. Повторяем процесс восстановления. На этот раз все гладко. Теперь ясно где был «поворот не туда»

 Нет комментариев    53   2 мес   lifehack   user   windows

путь к папке system32

часто надо выполнить системную команду cmd, ipconfig и т. д. запуск осуществляется от имени системы без окружения (отсутствуют глобальные переменные), путь приходится писать полный, для универсальности определим расположение папки system32

function SystemFolder: string;
begin
  SetLength(Result, Windows.MAX_PATH);
  SetLength(
    Result, Windows.GetSystemDirectory(PChar(Result), Windows.MAX_PATH)
  );
end;

обычно, результатом работы будет следующий путь: c:\windows\system32

 Нет комментариев    17   6 мес   free pascal   windows