|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Запуск команды после полной прогрузки службы. |
|
Любой язык - Запуск команды после полной прогрузки службы.
|
Новый участник Сообщения: 46 |
У меня уже мозг взрывается над следующей задачей:
Мне необходимо запускать программу с правами администратора в ограниченной учётной записи, причём из автозагрузки. Проблема в том, что служба «seclogon» не успевает прогрузиться и скрипт, в котором происходит запуск программы через RunAs не срабатывает. Может есть команда для Bat, Vbs, Autoit, которая может исполняться в ограниченной учётной записи, которая бы отслеживала подгрузку службы seclogon и только после этого продолжала работу? Рекомендация использовать паузу не оптимальна, хотелось бы запуск именно как только это становится возможным. И через планировщик тоже не вариант запускать т.к. он вырезан в той сборке Windows XP, которая используется. |
|
Отправлено: 12:13, 23-07-2016 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата DjBoBo:
Цитата DjBoBo:
|
||
Отправлено: 12:58, 23-07-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Вызов команды net start seclogon из под ограниченной учётной записи вываливается с ошибкой по причине нехватки прав, в учётной записи администратора команда отрабатывается и действительно ждёт запуска службы. Но мне необходима реализация именно из под ограниченной учётной записи.
А ожидание старта сервиса какой командой делается и будет ли оно работать в учётной записи с ограниченными правами? Я активно гуглил, но ничего такого так и не встретил. И я использую не чисто RunAs, а приложение cpau, но эта утилита и ей подобные программы всё равно не будут работать, пока системная служба seclogon не будет запущена. --- Дополнение--- Я тут в очередной раз поискал команду, которая бы ждала запуска службы, но такой команды вроде как нет. Но я подумал над скриптом, который бы мог работать в ограниченной учётной записи со следующим финтом: --- Отслеживать в памяти раз в секунду имя запускаемой программы (program.exe) ------- её нет? Тогда запускаем команду cpau -dec -lwp -file C:\start-program.job (это контейнер с зашифрованными логином и паролем, а также расположением запускаемого файла для runas) ------------- программа (program.exe) не появилась через 3 секунды? Тогда убиваем процесс cpau.exe и вновь переходим к отслеживанию. --- программа появилась в оперативной памяти? Завершаем работу скрипта. Пояснение про 3 секунды после старта cpau: после запуска в случае успешной подгрузки службы «seclogon» практически моментально стартует заданную программу с правами админа, а если в момент запуска служба всё ещё недоступна, то она будет висеть и к моменту прогрузки службы выдаст ошибку. Вот только моих любительских знаний не хватит для написания такого скрипта. Буду признателен за помощь . |
Последний раз редактировалось DjBoBo, 24-07-2016 в 00:20. Отправлено: 15:13, 23-07-2016 | #3 |
Ветеран Сообщения: 547
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 19:44, 25-07-2016 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать DjBoBo, "Тупо" реализовал Ваш алгоритм в Дополнении в vbs
Prog1 = "program.exe" Prog2 = "cpau -dec -lwp -file C:\start-program.job" Time1 = 1 * 1000 ' Время 1 паузы (1 сек) Time2 = 3 * 1000 ' Время 1 паузы (3 сек) Set WMI = GetObject("winMgmts:") Set WShell = CreateObject("WScript.Shell") SQuery1 = "Select *From Win32_Process Where Name=" + """" + Prog1 + """" SQuery2 = "Select *From Win32_Process Where Name=" + """" + Prog2 + """" WScript.Sleep Time1 Do Set Proc2 = WMI.ExecQuery(SQuery2) For Each Process In Proc2 ' Убиваем вторую Process.Terminate Next Set Proc1 = WMI.ExecQuery(SQuery1) If Proc1.Count = 0 Then ' Если нет первой программы Sending = WShell.Run(Prog2, 2, False) ' Запускаем вторую Else Exit Do End If WScript.Sleep Time2 Loop |
|
------- Отправлено: 10:25, 26-07-2016 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - зависание ноутбука после полной переустановки системы | simsa | Microsoft Windows 7 | 6 | 17-12-2014 16:33 | |
Система - Запуск скрипта после старта службы | skeletor | Программное обеспечение Windows | 2 | 30-06-2013 14:15 | |
HDD - после полной проверки диска пропали важнЧые файлы | reddenya | Накопители (SSD, HDD, USB Flash) | 2 | 06-10-2010 13:08 | |
Запуск скрипта после полной загрузки Windows | Vagac | AutoIt | 5 | 19-03-2010 22:43 | |
Автоматический запуск пакетного файла после полной загрузки ОС | ChVL | Автоматическая установка Windows 2000/XP/2003 | 8 | 11-05-2007 00:16 |
|