I ran into this example for locking Windows workstation:
using System.Runtime.InteropServices;
...
[DllImport("user32.dll", SetLastError = true)]
static extern bool LockWorkStation();
...
if (!LockWorkStation())
throw new Win32Exception(Marshal.GetLastWin32Error()); // or any other thing
Is there a pure managed alternative to this snippet? Namely, without P-Invoke.
No there is not. This is the best way to achieve this action.
Even if it was provided in the BCL, its implementation would almost certainly be identical to your sample. It’s not something the CLR would natively implement.