Подтвердить что ты не робот

Разблокировать Windows программно

В моем текущем коде С# я могу программно заблокировать сеанс пользователя Windows (так же, как Windows + L).

Поскольку приложение все равно будет работать, есть ли способ разблокировать сеанс из этой программы на С#. Учетные данные пользователя известны. Приложение работает в Windows 7.

4b9b3361

Ответ 1

Вот некоторые хакеры для этого: http://www.codeproject.com/Articles/16197/Remotely-Unlock-a-Windows-Workstation Не проверял сам, хотя.

Не для части .NET, но вы также можете создать свой собственный пользовательский интерфейс входа в систему и вставить туда какой-то механизм. Это может легко стать проблемой безопасности.

Ответ 2

Для входа в систему вам понадобится собственный поставщик учетных данных Windows. Кроме того, вам нужно будет сохранить учетные данные пользователя для входа в систему. В Windows SDK 7 есть несколько примеров < https://www.microsoft.com/en-us/download/details.aspx?id=8279

Там есть куча проектов, которые помогут вам начать работу под Samples\security\credentialproviders.

Чтобы разблокировать экран:

  • установить имя пользователя/пароль в CSampleCredential::Initialize
  • установить autologin в true в CSampleCredential::SetSelected
  • найдите образец поставщика оборудования для сообщения WM_TOGGLE_CONNECTED_STATUS, чтобы узнать, как вызвать логин
  • создайте способ связи с вашим приложением, чтобы запустить разблокировку (например, локальный сервер tcp)

Это боль в заднице, но она работает.

Ответ 3

    var path = new ManagementPath();
    path.NamespacePath = "\\ROOT\\CIMV2\\Security\\MicrosoftVolumeEncryption"; path.ClassName = "Win32_EncryptableVolume";

    var scope = new ManagementScope(path, new ConnectionOptions() { Impersonation = ImpersonationLevel.Impersonate });

    var management = new ManagementClass(scope, path, new ObjectGetOptions());

    foreach (ManagementObject vol in management.GetInstances())
    {

        Console.WriteLine("----" + vol["DriveLetter"]);
        switch ((uint)vol["ProtectionStatus"])
        {
            case 0:
                Console.WriteLine("not protected by bitlocker");
                break;
            case 1:
                Console.WriteLine("unlocked");
                break;
            case 2:
                Console.WriteLine("locked");
                break;
        }

        if ((uint)vol["ProtectionStatus"] == 2)
        {
            Console.WriteLine("unlock this driver ...");

            vol.InvokeMethod("UnlockWithPassphrase", new object[] { "here your pwd" });

            Console.WriteLine("unlock done.");
        }
    }

Примечание: это работает только при запуске Visual Studio в качестве администратора.

Ответ 4

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

Ответ 5

Нет, нет никакого способа сделать это, по дизайну. Какой ваш сценарий и зачем вам нужно блокировать/разблокировать рабочую станцию?