Windows Service Account Lokales System. So verfolgen Sie SYTEM Session Ex: System entsperren und sperren usw.C#

Ein Treffpunkt für C#-Programmierer
Guest
 Windows Service Account Lokales System. So verfolgen Sie SYTEM Session Ex: System entsperren und sperren usw.

Post by Guest »

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>

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);
}
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post