C# 如何在C中使用OnSessionChange检测Windows登录事件#
我无法在Windows中检测到此登录事件 这是我的密码:C# 如何在C中使用OnSessionChange检测Windows登录事件#,c#,windows,C#,Windows,我无法在Windows中检测到此登录事件 这是我的密码: namespace ConsoleApplication2 { public class MyService: ServiceBase { public MyService() { CanPauseAndContinue = true; CanHandleSessionChangeEvent = true; }
namespace ConsoleApplication2
{
public class MyService: ServiceBase
{
public MyService()
{
CanPauseAndContinue = true;
CanHandleSessionChangeEvent = true;
}
protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
base.OnSessionChange(changeDescription);
}
}
class Program
{
static void Main(string[] args)
{
MyService tpl = new MyService();
Thread t = new Thread(delegate()
{
while (true) { }
});
t.Start();
}
}
}
如何测试运行此应用程序,然后将远程桌面安装到笔记本电脑中?我可以在Windows EventViewer中看到生成的事件,但从未调用我的OnSessionChange
(我在其中添加了一个断点)
是我的代码错了还是我的测试方法错了?通常,在任何Windows桌面系统上都不允许同时进行多个远程桌面会话。因此,如果要使用RDP以不同的用户身份登录,那么我假设您已经破解了这个问题,或者正在使用windows server(这排除了XP!) 无论如何,每个登录到系统的用户都将因此运行自己的应用程序,并且每个应用程序集对该用户都是唯一的。因此,App1可以由每个用户独立运行 这意味着您的控制台应用程序无法检测到登录的其他用户 为此,必须使用Windows服务。它在后台运行,可以检测多个用户,也可以检测登录和注销。看 这就是从
ServiceBase
继承MyService
的目的。如果您没有将应用程序作为服务运行,则表明您没有正确运行它
您需要先运行它,然后像运行服务一样运行它
您说您认为您的应用程序不能作为服务运行。我不知道为什么,但如果是这样的话,那么您必须考虑创建某种脚本,以便在启动/登录时运行应用程序
这样,每当有人登录时,您的应用程序就会运行。这对你来说可能更简单 一个建议是,不要在你的笔记本电脑中对其进行编码,而是将其添加为登录响应,作为计划任务的一部分(如果你有windows 10,这是一个sinch)…你将其添加到登录时运行,它确实做到了。。你不必检测它,我正在Windows7上测试它,但它也需要在XP上运行,所以我需要使用code.boo来检测它。。隐马尔可夫模型。。好计划。一开始就开枪。。如果事件日志对您不起作用,您可以监视它。。您的应用程序是否作为服务运行?不,它不是作为服务运行。而且我认为我不能把它作为一项服务来运行。哦。。这可能就是为什么它会出点问题的原因。。因为servicebase是用于服务的。。