SystemEvents.SessionSwitch用户被locking解锁

SystemEvents.SessionSwitch用户被locking解锁,第1张

概述SystemEvents.SessionSwitch用户被locking/解锁

我正在使用SystemEvents.SessionSwitch事件来确定运行我的进程的用户是否被locking,但事件不会让您知道哪个用户被locking/解锁。 我怎样才能得到这个信息(从一个低特权用户拥有的过程)

2应用程序最重要的问题

使用Rx同步两个stream

gdi +在Graphics对象上绘制图像时出现的一般错误

我如何select用户删除文件夹中的所有文件(但没有子目录)?

Visual Studio图标的含义

我不认为你可以部分信任的代码。 如果您的应用程序或其中的一部分可以成为一个完整的信任服务,会话ID可以按照相关问题 的答案中指定的来检索。

然后给定会话ID,您可以找到任何具有该会话ID的进程以获取实际用户(从“ 获取windows进程所有者名称”中抽象出来):

[Dllimport ("advAPI32.dll",SetLastError = true)] static extern bool OpenProcesstoken (IntPtr ProcessHandle,UInt32 DesiredAccess,out IntPtr TokenHandle); [Dllimport ("kernel32.dll",SetLastError = true)] [return: MarshalAs (UnmanagedType.Bool)] static extern bool CloseHandle (IntPtr hObject); static uint TOKEN_query = 0x0008; // ... public static windowsIDentity GetUserFromSession(int sessionID) { return Process.GetProcesses() .Where(p => p.SessionID == sessionID) .Select(GetUserFromProcess) .FirstOrDefault(); } public static windowsIDentity GetUserFromProcess(Process p) { IntPtr ph; try { OpenProcesstoken (p.Handle,TOKEN_query,out ph); return new windowsIDentity(ph); } catch (Exception e) { return null; } finally { if (ph != IntPtr.Zero) CloseHandle(ph); } }

总结

以上是内存溢出为你收集整理的SystemEvents.SessionSwitch用户被locking/解锁全部内容,希望文章能够帮你解决SystemEvents.SessionSwitch用户被locking/解锁所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1289068.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存