Windows Service Account Lokales System. So verfolgen Sie SYTEM Session Ex: System entsperren und sperren usw.
Posted: 18 Feb 2025, 12:38
Erstellen Sie das Arbeitnehmer -Überwachungs -Service -Tool. Ich benutze Windows Service, um das Tool zu erstellen. Jetzt bin ich sehr verwirrt, mit welchem Servicekonto ich dieses Tool erstellen muss. Diese Verwirrung tritt auf, als ich versucht habe, die Systemsperrung zu protokollieren und Zeit mithilfe von LocalSylytem -Konto freizuschalten. Das Ereignis wird nicht ausgelöst. Nach einiger Zeit des Debuggens, ich verstehe, dass das lokale System auf Service 0 -Sitzung ausgeführt wird. Es hat keine Zugriffsdesktopeinstellungen. Ich muss den Arbeitgeber für den gesamten Zugangsunternehmen bieten. Zukünftig werden die Funktionen verbessert, wie die App -Nutzung durch Mitarbeiter, Track -Netzwerk, Herunterfahren und Öffnen usw. Kann mir jemand helfen, < /p>
Ich habe versucht, den Sitzungsschalter zu abonnieren. Es wird erfolgreich abonniert. Aber das Ereignis löst nicht aus. < /P>
Ich habe versucht, den Sitzungsschalter zu abonnieren. Es wird erfolgreich abonniert. Aber das Ereignis löst nicht aus. < /P>
Code: Select all
using System;
using System.Diagnostics;
using System.IO;
using System.ServiceProcess;
using System.Timers;
using Microsoft.Win32;
namespace MyFirstService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
WriteToFile("Service is started at " + DateTime.Now);
// Subscribe to session switch events
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
}
protected override void OnStop()
{
WriteToFile("Service is stopped at " + DateTime.Now);
// Unsubscribe from session switch events
SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;
}
void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
{
WriteToFile("Event Triggered");
if (e.Reason == SessionSwitchReason.SessionLock)
{
WriteToFile("System Locked" + DateTime.Now);
}
else if (e.Reason == SessionSwitchReason.SessionUnlock)
{
WriteToFile("System UnLocked" + DateTime.Now);
}
}
public void WriteToFile(string Message)
{
try
{
string path = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string filepath = Path.Combine(path, "ServiceLog_" + DateTime.Now.Date.ToShortDateString().Replace('/', '_') + ".txt");
using (StreamWriter sw = File.AppendText(filepath))
{
sw.WriteLine($"{DateTime.Now}: {Message}");
}
}
catch (Exception ex)
{
// Handle exceptions (e.g., file access issues)
EventLog.WriteEntry("Application", $"Failed to write to log file: {ex.Message}", EventLogEntryType.Error);
}
}
}
}