2012-12-06 13 views
11

Powiel możliwe:
Lock Windows workstation programmatically in C#Jak programowo zablokować stację roboczą z systemem Windows?

Obecnie pracuję w studio wizualnych okien aplikacji formularza, który wymaga funkcji, która blokuje stację roboczą. W jaki sposób mogę użyć user32.dll do wykonania blokady (Windows + L), gdy funkcja jest wywoływana?

+0

dupe Zamieściłem prosi zarządzanego rozwiązania, ale nie zarządzane rozwiązanie jest zamieszczona w samym pytaniu :) –

+0

nie powielać, możliwy duplikat nie zapewnia rozwiązania! –

+0

Odpowiedź jest w pytaniu – spender

Odpowiedz

28

nie próbowałem to sam, ale znalazłem this na google

Process.Start(@"C:\WINDOWS\system32\rundll32.exe", "user32.dll,LockWorkStation");

EDIT: Próbowałem go, i to działa!

edit2: Oto solution przy użyciu user32.dll, który nie uruchamia zewnętrznego procesu.

using System.Runtime.InteropServices;

zadeklarować sposób jak poniżej:

[DllImport("user32.dll")] 
public static extern bool LockWorkStation(); 

a następnie wywołać LockWorkStation();.

Voilà

+0

Tak, a zduplikowane pytanie nie dostarcza Twojego genialnego rozwiązania! –

+0

+1. Korzysta z user32.dll, sprawdza, blokuje stację roboczą, sprawdza. Tak, wydaje się pomocne. Jednak uruchomienie podprocesu może mieć nieprzewidziane okoliczności. Kto wie. =) –

+0

Psst. ** Jeśli ** skopiowałeś to z "duplikatu", przypisz oryginalnego autora. =) –

0
using System.Runtime.InteropServices; 


[DllImport("user32.dll")] 
public static extern int ExitWindowsEx(int uFlags, int dwReserved); 

zadzwoń

ExitWindowsEx(0, 0); 
+0

Wygląda na to, że wylogujesz użytkownika, a nie zablokujesz stacji roboczej zgodnie z wymaganiami. – Iridium

+0

W pewien sposób blokuje to stację roboczą i odsyła użytkownika do ekranu wyboru użytkownika. Minusem jest to, że użytkownik straci całą swoją pracę. – TheLegendaryCopyCoder

Powiązane problemy