Ich habe ein paar Probleme.
< ol>
[*]In einem Shared-Desktop-Szenario kann es mehrere „aktive“ Sitzungen geben (wenn Sie beispielsweise „Abfragesitzung“ ausführen, werden Ihnen mehrere aktive Sitzungen angezeigt). Daher wird das Aufzählen von Sitzungen (WTSEnumerateSessions) zur Suche nach einer „aktiven“ Sitzung wahrscheinlich nicht funktionieren, es sei denn, Sie wissen, wer der aktuell aktive Benutzer für die aktuelle Sitzung ist! Und ich bin nicht sicher, wie ich das finde.
[*]Es muss auch in der Lage sein, von Sitzung 0 aus ausgeführt zu werden (d. h. versteckt). Wenn beispielsweise der aktive Benutzer in Sitzung 2 ausgeführt wird, ich meinen Code jedoch in einer versteckten Sitzung 0 ausführe, muss ich Sitzung 2 zurückgeben.
Ich kann die Sitzungs-ID abrufen, wenn ich von außerhalb der Sitzung 0 ausführe. Dies ist der Code, den ich verwendet habe:
Code: Select all
public static uint GetCurrentSessionId()
{
uint sessionId;
uint processId = (uint)System.Diagnostics.Process.GetCurrentProcess().Id;
if (!ProcessIdToSessionId(processId, out sessionId))
{
throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
}
return sessionId;
}
Alle Hinweise willkommen!