2012-12-06 13 views
11

Mögliche Duplizieren:
Lock Windows workstation programmatically in C#Wie sperre ich eine Windows-Workstation programmgesteuert?

Ich arbeite derzeit an einem Visual Studio Windows Form-Anwendung, die eine Funktion erfordert, dass die Arbeitsstation gesperrt wird. Wie kann ich user32.dll verwenden, um eine Sperre (Windows + L) zu machen, wenn die Funktion aufgerufen wird?

+0

Der Betrogene ich gepostet wird für eine verwaltete Lösung gefragt, aber die nicht-verwaltete Lösung in der Frage selbst geschrieben :) –

+0

nicht duplizieren, die mögliches Duplikat liefert keine Lösung! –

+0

Die Antwort ist in der Frage – spender

Antwort

28

Ich habe es selbst nicht ausprobiert, aber ich fand this auf Google

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

edit: Ich versuche es, und es funktioniert!

edit2: Hier ist eine solution mit user32.dll, die einen externen Prozess nicht startet.

using System.Runtime.InteropServices;

deklarieren eine Methode wie folgt:

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

und dann LockWorkStation(); nennen.

Voilà

+0

Ja, und die doppelte Frage liefert keine geniale Lösung! –

+0

+1. Verwendet user32.dll, check, sperrt die Workstation, check. Ja, scheint hilfreich zu sein. Das Starten eines Subprozesses kann jedoch unvorhergesehene Umstände haben. Wer weiß. =) –

+0

Psst. ** Falls ** du das von der "Duplikatsfrage" kopiert hast, schreibe bitte den ursprünglichen Autor an. =) –

0
using System.Runtime.InteropServices; 


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

rufen Sie einfach

ExitWindowsEx(0, 0); 
+0

Dies würde den Benutzer abmelden und die Arbeitsstation nicht wie erforderlich sperren. – Iridium

+0

In gewisser Weise sperrt dies die Arbeitsstation und sendet den Benutzer zurück zum Benutzerauswahlbildschirm. Der Nachteil ist, dass der Benutzer all seine Arbeit verlieren wird. – TheLegendaryCopyCoder