Программно заблокировать рабочую станцию ​​​​Windows на С#

Я столкнулся с этим примером для блокировки рабочей станции Windows:

using System.Runtime.InteropServices;
...
[DllImport("user32.dll", SetLastError = true)]
static extern bool LockWorkStation();

...
if (!LockWorkStation())
    throw new Win32Exception(Marshal.GetLastWin32Error()); // or any other thing

Есть ли чистая управляемая альтернатива этому фрагменту? А именно без P-Invoke.


person Ron Klein    schedule 11.08.2009    source источник


Ответы (1)


Нет, нет. Это лучший способ добиться этого действия.

Даже если бы он был предоставлен в BCL, его реализация почти наверняка была бы идентична вашему образцу. Это не то, что CLR будет реализовывать изначально.

person JaredPar    schedule 11.08.2009
comment
@RonKlein: Эй, я хочу сделать то же самое. то есть программно блокирует рабочий стол Windows и показывает экран входа в систему, не закрывая сеанс текущего пользователя. Это делает то же самое или что-то другое??? спасибо за ваше вышеуказанное решение, оно помогает мне во многих отношениях. Просто дайте мне понять выше вопрос. - person Hemang Rami; 14.02.2012
comment
@ Хеманг Рами, я думаю, вы пытаетесь сделать именно то, о чем я спрашивал: заблокировать рабочую станцию, сохраняя активным текущий сеанс. - person Ron Klein; 14.02.2012
comment
@RonKlein: я сделал это, используя метод LOCKWORKSTATION. теперь нормально. ? Я не использую rundll32.exe для блокировки рабочей станции. - person Hemang Rami; 15.02.2012
comment
@ Хеманг Рами, без проблем. Просто знайте, что это работает только на ОС Windows. - person Ron Klein; 15.02.2012
comment
stackoverflow.com/questions/13745788/ предлагает решение! - person Sawan; 06.12.2012