【发布时间】:2026-01-04 13:15:02
【问题描述】:
编辑:这里的问题不是它被 GP 锁定的事实,而是它在服务帐户下作为服务运行,并且无法访问交互式桌面
我有一个 C# 应用程序需要检查用户的会话何时被锁定,我使用的是Microsoft.Win32.SystemEvents.SessionSwitch,当用户手动锁定机器时它可以正常工作。
问题在于,当机器通过组策略(用户配置 > 策略 > 管理模板 > 个性化 > 屏幕保护程序超时)锁定时,应用程序不会启动开关。
还有其他方法可以检查机器是否被锁定?还是有其他方法可以通过应用程序获取的组策略锁定机器?
注意该应用程序作为具有完全管理员权限的服务在 Windows 7 上运行
这是我的代码,提前谢谢!!! :)
public void OnStart(string[] args)
{
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
}
void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLock)
{
//DO STUFF
}
}
【问题讨论】:
-
目前正在寻找一种解决方案,该解决方案涉及在 Windows 事件查看器中启用其他登录/注销事件,这将记录工作站锁定和解锁,然后轮询以了解用户何时锁定/解锁他们的工作站
标签: c# switch-statement locking screensaver group-policy