У меня есть программа, которая запускается при запуске системы с помощью планировщика заданий в Windows Server 2012. Программа должна запускаться, даже если компьютер автоматически перезагружается.
Администратор - это учетная запись, используемая для запуска программы, для задачи выбран параметр «Запускать, вошел ли пользователь в систему или нет».
Проблема заключается в том, что когда кто-то, наконец, входит в систему как администратор, используя Remote Desktop Connection, интерфейс (окно программы) скрывается.
Как я понимаю, нет способа решить эту проблему с помощью планировщика заданий.
Как я могу решить это?
Это должно быть довольно распространенной проблемой, но я не могу найти что-либо, ища в сети. Я очень удивлен, что Microsoft допускает такое ограничение в своем планировщике. Могу ли я создать VBScript или что-то, что запускается при запуске и запускает программу, которая затем будет видна, когда пользователь действительно войдет в систему?
Другие идеи?
(Я не хочу создавать отдельную программу с графическим интерфейсом, которая соединяется с исходной программой, кстати. Я бы также предпочел, чтобы мне не приходилось завершать уже запущенную программу при входе пользователя в систему, а затем запускать ее. это снова.)
Ответы:
Разобрался, как это сделать сам. Это своего рода обходной путь, но я ожидал этого.
http://technet.microsoft.com/sv-se/sysinternals/bb963905.aspx
Стоп! Только пока не съеживайтесь. Читай дальше...
Запустите его, установите так, чтобы администратор автоматически входил в систему.
Создайте задачу в планировщике задач. Установите его для запуска только когда пользователь (администратор) вошел в систему. Триггер "при входе в систему" и указывает, что это только когда администратор входит в систему.
Создайте второе задание. Запускать только при входе пользователя в систему, запускать при входе администратора. Действие должно быть «запустить программу», а программа - «C: \ Windows \ System32 \ rundll32.exe» с полем аргумента, установленным на «user32.dll, LockWorkStation».
Теперь, если вы перезагрузите компьютер, администратор автоматически войдет в систему, запустится программа, которую вы хотите запустить, и рабочая станция будет заблокирована. Если я вхожу через подключение к удаленному рабочему столу, я вижу окно программы и использую графический интерфейс. Я могу без проблем заблокировать / разблокировать компьютер и отключить / повторно подключить, как мне нравится. Нет проблем, если я иду на сервер и захожу на рабочую станцию. Поскольку администратор уже вошел в систему, задача больше не будет запускаться (она не создает бесконечный цикл входа-блокировки-блокировки, из которого невозможно выйти).
Просто как тот. Конечно, после того, как компьютер заблокирован после автоматического входа в систему, уходит одна секунда, и я предполагаю, что профессиональный хакер с физическим доступом к компьютеру может сделать что-то подлое в течение этого временного окна, но в моем случае я могу пропустить эту угрозу безопасности. Пока я не пускаю профессиональных хакеров в мой дом и не показываю им компьютер, система должна быть относительно безопасной. Кроме того, на компьютере, который нуждается в защите супер-хранилища, не так много ценности, поэтому я вполне доволен этим решением.
источник
SuperUser
. Если бы вы могли ответить на него там, это будет отличная помощь - superuser.com/questions/902386/…Тогда почему вы не делаете это системной службой, как определяют спецификации Windows?
Тебе нельзя. Фоновые программы не должны взаимодействовать с пользовательским интерфейсом. Или: пользовательский интерфейс должен запустить свою собственную программу, которая затем подключается к службе. Пользовательский интерфейс, запущенный в пользовательском пространстве вошедшего в систему пользователя, выполняет презентацию, а служба Windows - обработку. Вот как модель рассчитана на 15 лет или около того.
Я больше удивлен, что вы никогда не задумывались, почему.
Есть несколько проблем:
На данный момент ни мне, ни Microsoft не безразлично, что вам нравится делать. Существует установленная и поддерживаемая модель для привязки фоновой обработки к пользовательскому интерфейсу пользователя, вошедшего в систему - используйте его или нет. Но когда нет, не жалуйтесь о проблемах безопасности, которые вы поставили.
источник
Это все из-за того,
Session
что ваша программа запускается. Если никто не вошел в систему, там нет интерактивного сеанса для отображения, я полагаю, что он запускаетсяSession 0
, со странным пользовательским интерфейсом, который не отображается, как другие.Теперь, если ваша программа обнаруживает, когда
explorer.exe
запускается (или каким-либо другим способом обнаружения входа пользователя) и волшебным образом переопределяет себя или порождает какой-либо дочерний процесс в этом новом sessionid, тогда любой, кто входит в систему, с радостью увидит, что вы делаете.источник