C#如何在不同用户之间保留流程

时间:2015-04-30 09:19:20

标签: c# c wpf

对于学校,我必须使用与大多数其他软件不同的方法开发反恶意软件。我们必须将程序列入白名单并阻止执行非白名单软件,而不是将有害软件列入黑名单。我们使用C#和WPF在C和其余程序中编写了一个驱动程序。驱动程序稳定,程序运行良好。但是我们有一个很大的问题。我们无法切换用户。

一旦我们尝试切换用户,计算机就会冻结(程序未运行时不会发生)。我们已经在互联网上看了很长一段时间,我们没有找到任何关于这个问题的宝贵帮助。

我现在的问题:

  • 我们如何知道计算机何时切换用户。
  • 当发生这种情况时,我们如何“暂停”该过程,切换用户并恢复该用户的软件而无需运行该软件两次(每个用户一次)。

*我不能包含代码,因为我们必须遵守有关源代码的保密协议。

1 个答案:

答案 0 :(得分:0)

您应该能够使用SystemEvents.SessionEnding和SystemEvents.SessionSwitch事件来检测系统关闭和用户更改。

https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.sessionending%28v=vs.110%29.aspx

https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.sessionswitch%28v=vs.110%29.aspx

听起来好像至少部分程序应该作为服务运行。服务每台机器只运行一个实例,因此不需要为不同的用户暂停和重置任何内容。