удаленный вход в систему пользователя Windows, зная его имя и пароль - PullRequest
1 голос
/ 30 декабря 2010

Вот что я хочу сделать:

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

Я имел в виду службу Windows, которая запускается с компьютера и также прослушивает эти сообщения, а если получено, то выполняет свою работу

но я понятия не имею, с чего начать

(в основном я пытаюсь войти в систему пользователя без необходимости вводить пароль, который, как я сказал, хранится и известен - нужно что-то вроде программного обеспечения Windows 7 для отпечатков пальцев, и те, которые вам пришлось установить в Vista / xp, чтобы вход по отпечатку пальца работал (отпечаток пальца был только примером))

Ответы [ 4 ]

1 голос
/ 06 января 2011

В зависимости от того, под какой операционной системой вы хотите работать, есть два метода.

Для Windows XP, Windows 2000 и Windows Server 2003 вам необходимо создать GINA.DLL. Это замена DLL, которая должна следовать определенным правилам, которые обрабатывают процесс аутентификации. В вашем случае заменяющая DLL будет известна службе, которая прослушивала ваш сигнал запуска, и она будет вызывать DLL с соответствующим именем пользователя и паролем.

Статья в журнале MSDN Magazine по настройке GINA.DLL
MSDN запись на GINA

Для Windows Vista / 7 и выше вам нужно заглянуть в API провайдера учетных данных.

Статья в журнале MSDN об API провайдера учетных данных в Vista .
MSDN-запись в API провайдера учетных данных

0 голосов
/ 04 января 2011

Я хочу немного уточнить предложение Vikram.exe .

Конечно, использование AutoAdminLogon кажется родным для проблемы, но сохранение пароля в реестре в виде открытого текста под HKLM\...\Winlogon\DefaultPassword не очень хорошо. Начиная с Windows 2000 поддерживается использование секретов DefaultPassword, что дает тот же эффект, что и значение реестра DefaultPassword (см. Защита пароля автоматического входа в систему для примера кода).

Еще один способ заставить пользователя войти в систему или выполнить любые другие действия на экране входа в систему - переключиться на рабочий стол Winlogon (полное имя WinSta0\Winlogon). Для этого вы можете использовать SwitchDesktop и SetProcessWindowStation (см. Оконные станции и рабочие столы ). Если служба работает под учетной записью System, у вас будут все права для этого. В зависимости от конфигурации вашего сервиса может также потребоваться использовать SetTokenInformation с TokenSessionId для изменения идентификатора текущего сеанса. После запуска процесса обслуживания на рабочем столе WinSta0\Winlogon вы можете использовать такие функции, как FindWindow и другие API-интерфейсы GUI, чтобы разместить любую информацию в элементах управления окном (имя пользователя, пароль и т. Д.) Другого процесса. Таким образом, вы можете реализовать более сложные сценарии.

0 голосов
/ 04 января 2011

Во-первых, позвольте мне сказать, что я не на 100% уверен, как полностью заполнить такое приложение, но у меня есть несколько советов.

вам потребуется создать службу Windows, которая запускается во время предварительной регистрации, выможет создать службу в C #. Пример создания службы C # приведен ниже:

http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx

В вашем приложении вы установите свойство Startup Type на Automatic, это автоматически запустится.ваш сервис при загрузке.

Вы должны знать, что службы Windows запускаются в защищенном контексте по учетной записи, поэтому вам нужно будет заставить свой сервис работать с privs, сделайте это.

В свойствах вашего сервисаВы можете нажать Войти и вы можете

  • Чтобы указать, что служба использует учетную запись локальной службы, нажмите эту учетную запись, а затем введите следующую команду: NT AUTHORITY \ LocalService .

  • Чтобы указать, что служба использует учетную запись сетевой службы, щелкните Эта учетная запись, а затем введите следующую команду: NT AUTHORITY \ NetworkService .

Поскольку вы пытаетесь сделать это удаленно, вам придется взглянуть на WMI (Инструментарий управления Windows), и вы сможете запускать / останавливать и отправлять команды на вашservice.

Затем ваша служба отправит команду в Управление входом в систему (не уверен в названии).

Вы также можете проверить этот класс WOL, который будет включать компьютер удаленно, так какПока это поддерживает Wake On LAN, если это для корпоративной среды, то я советую вам проверить свои сетевые карты, чтобы убедиться, что они поддерживаются

http://www.codeproject.com/KB/IP/wolclass.aspx

Я знаю некоторые образованияпрограммное обеспечение, которое я использую для школ, которое называется CC4 (http://www.rm.com/shops/rmshop/story.aspx?cref=PS1026195), и мы можем делать именно то, что вам нужно в этой системе, я не до конца уверен, как она работает, но я верю, что она использует те же принципы, что описаны выше.

0 голосов
/ 03 января 2011

Для этого можно использовать функцию автоматического входа в систему Windows.

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon до 1

Как только вы получите данные в сетевой сокет, установите следующие ключи реестра:

   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword 

После установки параметров реестра служба winlogon может прочитать эти значения и продолжить процесс входа в систему.

Подробнее о настройке параметров реестра см. http://support.microsoft.com/kb/315231

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...