...

Как сделать программу для входа в Windows

Как настроить автостарт программ без входа в систему?

Написал программу – бота и разместил его у себя локально попавшись на то, что у амазона есть ограничение по трафику на их бесплатных виртуальных машинах.
Потому задался вопросом, можно ли как-то сохраняя безопасность системы от посторонних вмешательств со стороны домашних сделать так, чтобы выполнялся автоматический вход в предназначенную для экспериментов учётную запись запускались нужные стартовые bat-ники и после запуска система блокировалась в экран входа
Или же совершать запуск без входа

  • Вопрос задан более трёх лет назад
  • 2038 просмотров

Комментировать
Решения вопроса 1
mur_steel @mur_steel Автор вопроса

Для решения задачи, т.е. автоматического старта программы без входа в систему необходимо выполнить ряд условий
1) Понимать, что программа запущенная планировщиком заданий без входа не покажет вам своего личика и лишит возможности с ней взаимодействовать
2) Открыть планировщик заданий
3) Выставить галочки и пункты согласно скриншоту
(т.е запускать для всех пользователей и выбрать пользователя – администратора от имени которого и будет запущена программа)
5eec9f85d1196196802336.png
4) Выставить триггер срабатывания на:
5eec9ff63d1f6307339060.png
5) И указать действие:
5eeca015e5155809935067.png
6) Ввести пароль пользователя от имени которого выполняется программа и радоваться успешному выполнению задачи

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 2

dimonchik2013

Dimonchik @dimonchik2013
non progredi est regredi
без входа шедулером вполне, необязательно от системного юзера, достаточно зарегистрированного
Ответ написан более трёх лет назад
mur_steel @mur_steel Автор вопроса

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

Jump

АртемЪ @Jump Куратор тега Windows
Системный администратор со стажем.

Планировщиком задач – запросто.
Только вот если у вас бот взаимодействует с экраном, мышь., кнопками – работать не будет.

Привязка дополнительных одноразовых паролей к окну входа Windows

На хабре уже давно знают об одноразовых паролях и технологиях OTP (One Time Password). Даже Яндекс придумал собственное решение. Я же хочу поведать вам о том как прикрутил интересную реализацию OTP к окну входа в сервер терминалов Windows.

image

Как все это работает

Весь функционал решения держится на замечательном проекте multiotp, опенсорсовом PHP софте, умеющим работать как с TOTP так и c HOTP , и даже с OCRA. Причем запустить эту красоту можно и в *nix и в Windows. Есть даже веб-интерфейс и релизы для систем виртуализации, но это уже вы сами копайтесь, мы размеберем минимально необходимый для старта набор действий.
Привязка mutltiotp к окну входа в винду осуществляется при помощи плагина MultiOneTimePassword-CredentialProvider.
Пользователь будет генерировать одноразовые пароли у себя на компьютере или мобильном устройстве.

Порядок действий указан на странице плагина, но в последней версии multiotp изменился синтаксис, поэтому я пробегусь по всем действиям для вас еще раз.

Установка сервиса multiotp

Скачиваем multiotp и располагаем его где-нибудь на сервере. Я брошу в корень системного диска C:\multiotp.

Генерация ключей

Затем нужно создать ключ для каждого пользователя, заведенного на сервере. Подчеркну — мы говорим именно о локальных пользователях. У multiotp есть возможность привязки к ldap, но это слишком большая тема для одной статьи.

Для создания пользователей потребуются 160-битные ключи HEX (т.е. 20 символов в шестнадцатеричной системе счисления). Вы можете (и должны) генерировать их у себя сами в защищенное среде, в лабораторных же целях я вам предложу этот генератор. Указываете ему длину ключа (20) и количество пользователей в вашей системе, он все сделает сам. Сохраните куда-нибудь эти ключи, они нам дальше пригодятся.

Создание пользовательских ключей

Команда создания пользователей выглядит так (само собой в cmd перейдите в директорию с распакованным multiotp):

multiotp.exe -debug -create %USERNAME% %TOTP% %KEY% %PIN% %LENGTH% %LIVETIME% 

где
%USERNAME% — имя учетки пользователя в Windows;
%TOTP% — создание ключей для технологии TOTP (основанной на метке времени);
%KEY% — ключ созданный на предыдущем шаге;
%PIN% — дополнительный постоянный пин, который пользователь будет дописывать перед своим временным паролем (его можно не использовать, но команда требует указать какой-нибудь ключ);
%LENGTH% — длина одноразовых паролей (рекомендуются 6-ти символьные, так как большинство приложений генерируют именно их);
%LIVETIME% — срок действия одноразовых паролей (рекомендуется указать 30 секунд, так как большинство приложений генерируют именно их).

multiotp.exe -debug -display-log -create rdpclient1 TOTP 6696f39315f4c6388216 1234 6 30 

т.е. создал ключ для пользователя rdpclient1 с пином 1234 (синтаксис команды требует указывать пин, даже если мы планируем его не использовать);

multiotp.exe -debug -display-log -set user pin= 

т.е. сказал что пин на самом деле не нужен.

Конвертация ключей для пользователей

Теперь нам нужно как-то передать пользователям их ключ, чтоб они могли у себя генерировать одноразовые пароли. Полноценный функционал multiotp позволяет через веб-интерфейс создать QR-код, который мы снимаем на наши телефоны и дальше работаем с ними. Я показываю минимальный функционал без интерфейса, так что придется работать руками.
Нужно будет ключи, созданные на втором шаге переконвертировать из 160-битного HEX в Base32. Опять же лучше это делать у себя в защищенной среде, кому лень, вот вам онлайн конвертер. Он даже не https, так что осторожней с ним. Он вроде бы понятно работает, обращайте внимание на регистр при вводе ключей.

Приложения для создания ключей

Переконвертированные ключи нужно дать пользователю. Есть куча приложений для мобильных ОС, которые могут генерировать одноразовые пароли. Я люблю Google Authenticator, он работает на большинстве ОС. Кому хочется побаловаться и не засорять мобильное устройство — можете поставить плагин в браузер.
Приложению или плагину нужно указать ключ, созданный на четвертом шаге. Там ничего сложного, думаю разберетесь сами.

Проверка работы сервиса

Чтобы проверить корректную работу сервиса multiotp следует потестировать создаваемые ключи в командной строке следующим образом:

multiotp.exe -display-log user %GENERATED_TOKEN% 

где user — имя пользователя в винде;
%GENERATED_TOKEN% — ключ генерируемый приложением на мобильном устройстве (следите за временем, у вас всего 30 сек с момента генерации пароля)
Ответ в командной строке выглядеть должен так:

0 OK: Token accepted 
Подключение плагина авторизации в Windows

Осталось малое — скачать и установить плагин для Windows. Вопросов установщик задает мало. Нужно установить компонент «Default Provider» (иначе он ничего делать не будет), указать путь к multiotp и написать сообщение для окна входа в систему Windows.
Готово. Можно проверять работу.

Нюансы:

1) Обязательно создайте пароли для всех, в том числе для администратора, иначе его не пустит в систему.
2) Обязательно настройте точное время на серваке и на устройствах пользователей, иначе ваши ключи не будут работать. Дело не именно в точности, а в том что время там и там должно совпадать.
3) Иногда не показывает в командной строке результат, но вы всегда можете почитать лог.
4) Если вам интересно как прикрутить это красоту к домену — скажите, я попробую и отпишусь.
5) Функционал огромный, все есть на вики multiotp: смс, QR, синхронизация, резервное копирование, привязка к чему угодно.
Тем, кто информацию любит воспринимать наглядно может быть полезен этот ролик.

UPD:

Получил невероятно хорошие комментарии и уточнения от пожелавшего остаться неизвестным товарища:
1) В самом начале настройки сервера, вводите команду:

multiotp.exe -debug -config default-request-prefix-pin=0 display-log=1 

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

2) С помощью этой команды можно регулировать bantime, для пользователей, которые ошиблись с паролем (по умолчанию 30 сек):

multiotp.exe -debug -config failure-delayed-time=60 

3) То, что будет написано в приложении google Authenticator над 6 цифрами, называется issuer, можно поменять с дефолтного MultiOTP на что-то другое:

multiotp.exe -debug -config issuer=other 

4) После проделанных операций, команда по созданию пользователя становится чуть проще:

multiotp.exe -debug -create user TOTP 12312312312312312321 6 

(время обновления цифр, равное 30 секундам, я не задаю, кажется оно по умолчанию равно 30).

5) Каждому пользователю можно изменить description (текст под цифрами в приложении Google Auth):

multiotp.exe -set username description=2 

6) QR-коды можно создавать сразу в приложении:

multiotp.exe -qrcode username c:\multiotp\qrcode\user.png:\multiotp\qrcode\user.png 

7) Можно использовать не только TOTP, но и HOTP (на вход функции хэширования подаётся не текущее время, а значение инкрементального счетчика):

multiotp.exe -debug -create username HOTP 12312312312312312321 6 

Пример

HOTP можно использовать в ситуациях, когда начальство любит железные решения, а не софт: к примеру, Yubikey программируется для использования HOTP и подходит для этого. Мы впоследствии отказались полностью от Yubikey+HOTP, поскольку если пользователь нажал на Yubikey не в том окне, где надо, то его последующие коды будут неподходящими (счетчик yubikey будет впереди на единицу) и придётся их с сервером синхронизировать:

multiotp.exe -resync user 061735 729371 

8) Если пользователь забыл/потерял телефон, можно сгенерировать десяток одноразовых кодов с помощью команды:

multiotp.exe -scratchlist username 

9) И хорошие пояснения
по поводу стабильности решения:

Работает уже больше года на нескольких серверах, никогда проблем с ним не было. Если и возникнет какая-то проблема с multiotp (мы к этому готовились и тестировали возможные варианты) — то достаточно сервер загрузить в безопасном режиме: в таком случае он загрузится с дефолтным credential provider (без участия multi-otp) и после этого нужно будет либо отключить в реестре провайдер multiotp, либо временно его деинсталлировать, сделав предварительно резервную копию папки c:\multitop

  • усиленная авторизация
  • безопасность windows
  • одноразовые пароли
  • OTP
  • пин-код
  • google authenticator
  • Информационная безопасность
  • Криптография

Как сделать программу для входа в Windows

Шаг 2. Создание проекта

Создайте проект для нового приложения. В Visual Studio для этого нужно зайти в меню File > New > Project .

Создание нового проекта в Visual Studio

После этого появится окно New Project:

Окно New Project в интерфейсе Visual Studio

В поле Name нужно вписать название вашего проекта, в поле Location – указать нужную директорию, в Solution name – ввести название решения. Заполнили данные – нажимаем OK .

Главный класс нового проекта в Visual Studio

Шаг 3. Создание интерфейса

Создайте представление будущей формы авторизации, как показано на рисунке ниже. Добавьте два поля ( username и password ) и кнопку для входа.

5 шагов для создания простой формы входа на C#

Шаг 4. Настройка соединения с базой

Создайте класс connection для настройки соединения с базой. Пример реализации представлен в листинге ниже:

Интерфейс работающей программы

Исходный код этой простой формы авторизации вы найдете на Github.

У нас есть много полезных материалов по C# для начинающих:

  • Лучшие актуальные шпаргалки по C# на все случаи жизни
  • Видеокурс по C# с нуля: от основ до полноценного приложения
  • Самый понятный видеокурс по C# для новичков

При подготовке материала использовались источники:
https://qna.habr.com/q/759403
https://habr.com/ru/articles/276865/
https://proglib.io/p/5-shagov-dlya-sozdaniya-prostoy-formy-vhoda-na-c-2020-03-24