Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Ответить
Настройки темы
CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте форумчане ! Такая дилемма возникла : необходимо получить при помощи команды NET получить текущее состояние учетной записи встроенного администратора (active\no) и передать результат в VBS скрипт. Скрипт в зависимости от результата - отображает определенный текст в окне. Со скриптом проблем не возникло, а вот реализовать передачу результата никак не выходит. Это реализуемо ?

Отправлено: 12:44, 05-12-2016

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата id334492052@vk:
Это реализуемо ?
Кратко - да. Более развернуто - все зависит от того, что из себя представляет VBS, а также задействуются ли в нем аргументы командной строки; если, например, VBS "склеивается" с bat по принципу гибрида, можно либо создать переменную, содержащие данные об активности профиля, а по ходу исполнения обращаться к этой переменной, либо через те же аргументы, либо через ADS (альтернативные потоки), либо через реестр, но последние два варианта из области утонченного разврата; аналогично можно поступить и во втором случае.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:05, 05-12-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Спасибо большое за ответ ! Собственно, задача была изначально следующая : получить состояние учетной записи встроенного админа (win7) и передать в vbs, который в зависимости от результата - отобразит определенный текст в окне вопроса и затем , выполнит определенную команду с перезагрузкой. Т.е. если учетка админа отключена - отобразит окно с предложение включить и выполнит команду "net user администратор /active" , ну или "no" в противном случае. Не подскажите, а как можно реализовать это всё целиком в bat , в частности передачу значения в переменную ?

Отправлено: 13:18, 05-12-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


id334492052@vk, зачем что-то изобретать, когда можно просто взять и просто добавить код в тот же VBS? Вот Вам примерная болванка:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True

For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery( _
		"SELECT * FROM Win32_UserAccount WHERE LocalAccount = True AND SID LIKE 'S-1-5-21-%-500'" _
	)
	
	If objSWbemObjectEx.Disabled Then
		If MsgBox("Enable [" & objSWbemObjectEx.Name & "] account?", vbQuestion + vbYesNo + vbDefaultButton2, "Enable account") = vbYes Then
			With GetObject("WinNT://" & strComputer & "/" & objSWbemObjectEx.Name & ",user")
				.AccountDisabled = False
				.SetInfo
			End With
			
			Call Reboot
		End If
	Else
		If MsgBox("Disable [" & objSWbemObjectEx.Name & "] account?", vbQuestion + vbYesNo + vbDefaultButton2, "Disable account") = vbYes Then
			With GetObject("WinNT://./" & objSWbemObjectEx.Name & ",user")
				.AccountDisabled = True
				.SetInfo
			End With
			
			Call Reboot
		End If
	End If
Next

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Reboot()
	Dim objSWbemObjectEx
	
	For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem")
		objSWbemObjectEx.Reboot()
	Next
End Sub
'=============================================================================

Последний раз редактировалось Iska, 07-12-2016 в 03:52. Причина: В одном месте использовал переменную strComputer, а в другом месте — забыл и оставил непосредственно «.». Поправил.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:08, 05-12-2016 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Счетчик производительности "% активности диска" Michael Хочу все знать 9 21-03-2018 13:41
CMD/BAT - [решено] Можно ли интегрировать, (.Vbs) скрипт в, (.bat) скрипт, и запустить его как "батник" turbolover Скриптовые языки администрирования Windows 1 29-07-2015 00:46
Интерфейс - [решено] Перестали работать "Выйти из системы" и "Сменить пользователя" в Windows 7! Goga 525iA Microsoft Windows 7 8 18-02-2012 13:16
Установка - [решено] Устранение "активности" с раздела жесткого диска Evropeez Microsoft Windows 2000/XP 2 25-05-2010 17:56
[решено] "Конфигурация пользователя" - "Конфигурация Windows" - "Настройка Internet Explorer" ultrakiller Microsoft Windows NT/2000/2003 6 28-09-2009 14:11




 
Переход