AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Tray Icon, Service und Vista

Ein Thema von mwitzsche · begonnen am 23. Nov 2006 · letzter Beitrag vom 26. Jul 2007
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Tray Icon, Service und Vista

  Alt 14. Mär 2007, 23:20
Grafik nicht, aber ich hoffe, ich kann es kurz mal beschreiben. Ich arbeite übrigens gerade an einem etwas längerem Artikel zu diesem Thema.

Die übergeordnete Einheit ist die WindowsStation. Eine WindowsStation beinhaltet die Desktops. Eine besondere Rolle nimmt die WindowsStation WinSta0 ein, da sie die einzige interaktive WindowsStation im System ist, die mit dem Benutzer interagieren kann. Sie beinhaltet mindesttens zwei Desktops: einmal den default Desktop des Benutzers und den WinLogon Desktop des WinLogon Prozesses. Diesen Desktop sieht man, wenn man Strg+Alt+Entf drück, wenn man eingeloggt ist.

Eine Logon Session repräsentiert eine Instanz eines speziellen Benutzers.

Fügen wir das ganze mal an einem Beispiel zusammen:
Die Firma ist die WindowsStation, eine Abteilung ist eine Ressource des Computers und die LogonSession wäre der Firmenausweis. Nehmen wir an wir sind als Gast in einer Firma mit sicherheitsrelevanten Abteilungen. Wir kommen also an Firmentor (Anmeldedialog) und weisen usn beim Pförtner aus (benutzername und Passwort). Der Pförtner gibt uns einen Firmenausweis, der uns dazu berechtigt bestimmte Abteilungen der Firma zu betreten (Nutzung von Ressourcen des Computers). Wollen wir nun eine Abteilung betreten, wird unser Firmenausweis kontrolliert und uns wird Zutritt gewährt oder nicht. Gäbe es dieses System nicht, müssten wir jedesmal, wenn wir eine Ressource´nutzen wollten, uns gegenüber dem System authentifizieren - und arbeiten wäre wohl nahe zu unmöglich.

Soweit das ganze mal in Kürze, ich hoffe, es war einigermassen verständlich.

Im Anhang noch mal ein kleines Programm, was das ganze etwas visualisiert: Die WinSta0 wurde von dem Bneutzer mit der SID S-1-5-5-X-Y erzeugt. Dies ist eine System LogonSession. Aus dem PSDK:
Zitat:
SECURITY_LOGON_IDS_RID
(S-1-5-5-X-Y)
A logon session. This is used to ensure that only processes in a given logon session can gain access to the window-station objects for that session. The X and Y values for these SIDs are different for each logon session.
Interessant ist noch die WindowsStation "Service-0x0-3e7$" (999 in dezimaler Schreibweise ). Dies ist die WindowsStation des Systemkontos. Diese Bezeichnung ist übrigens hard gecodet, da es immer nur eine geben kann. Die System Logon Session beinhaltet alle User mode Prozesses, die zur TBC (Trusted Computer Base) gehören, wie das Local Security Authority Subsystem (LSASS.EXE), den Logon Prozess (WINLOGON.EXE) und das Win32- SubSystem (CSRSS.EXE).
Angehängte Dateien
Dateityp: exe windowsstations_527.exe (19,0 KB, 20x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#12

Re: Tray Icon, Service und Vista

  Alt 15. Mär 2007, 01:35
Seeehr viele Artikel in der MSDN sprechen einfach von Session. Diese meinen also im eigentlichens Sinne LoginSession . Maschinen und Menschen können sich gegenüber dem System authentifizieren und bekommen dadurch eine neue Session, in der sie unter ihren Logindaten (credentials) agieren.

@Luckie: Machst du eine deutsche Übersetzung von Keith Brown "Programming Windows Security" ? (wie Luther die Bibel übersetzte, so dass mehr Leute diese lesen konnten

Übrigens sieht meine Ausgabe bei mir so aus (habe das RID durch XXXXX ersetzt):
Delphi-Quellcode:
WindowsStationen
================

WinSta0
  Handle: 64
  Benutzer SID: S-1-5-5-0-XXXXX
  benannte SID: GetLastError: 1332
  Desktops:
   Default
     Handle: 96
     Benutzer SID: S-1-5-5-0-XXXXX
     benannte SID: GetLastError: 1332
   Disconnect
     Handle: 0
     Benutzer SID: GetLastError: 998
     benannte SID: GetLastError: 1337
   Winlogon
     Handle: 0
     Benutzer SID: GetLastError: 998
     benannte SID: GetLastError: 1337


Service-0x0-3e7$

Service-0x0-3e4$

Service-0x0-3e5$
Die Services unterhalb von 3e7 scheinen von IIS zu sein.

Mich würde die Ausgabe unter Vista interessieren.


Angehängt habe ich ein kleines Programm, dass ich schnell in C++ runtergetippt habe, um die LoginSessions mittels WTSEnumerateSessions zu erfahren.
Den Quellcode habe ich dazugelegt (Visual C++ 2003).
Es zeigt jede 5 sek die aktuellen Sessions.
Man kann Änderungen sehen,
1. wenn man z.b. ein Fast User Switching (FUS) macht
2. den RemoteDesktop unter Systemsteuerung\System aktiviert und deaktiviert
3. Verbindungen zum RDP herstellt, beendet und einloggt.

Delphi-Quellcode:


WTSEnumerateSessions:

0. <<aktuelle Desktopsitzung>>
Name: Console
ID: 0
State: WTSActive

1. <<anderer Benutzer über FUS>>
Name:
ID: 1
State: WTSDisconnected

2. <<ein RDP listener>>
Name: RDP-Tcp
ID: 65536
State: WTSListen
Wer kann das in Vista testen?
Angehängte Dateien
Dateityp: zip wtstests_709.zip (50,7 KB, 13x aufgerufen)
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Tray Icon, Service und Vista

  Alt 15. Mär 2007, 09:46
Die Ausgabe ist OK. Ich habe die gleiche. Es dürfte an den fehlenden Rechten liegen. Und die Funktion, um die Sessions zu enumeriern habe ich noch gesucht. Besten Dank.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#14

Re: Tray Icon, Service und Vista

  Alt 15. Mär 2007, 19:53
Da wir in einem Delphiforum sind,
hier der Delphicode zum runterladbaren,obigen C pendant :

Delphi-Quellcode:
program WTSTest;

{$APPTYPE CONSOLE}

uses {win32api_current.zip units bei http://jedi-apilib.sourceforge.net}
  jwaWindows,jwaWTSApi32,SysUtils;


function GetErrorString(err : DWORD) : String;
var s : PCHAR;
begin
  if(FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER or
            FORMAT_MESSAGE_FROM_SYSTEM,
            0,
            err,
            0,
            PCHAR(@s),
            0,
            nil) = 0) then
   begin
     result := 'unkown error';
          exit;
   end;

        result := s;

   LocalFree(HLOCAL(s));

end;

var pInfo : Array of WTS_SESSION_INFO;
    i,count : DWORD;

begin
  writeln('WTSEnumerateSessions (quit with Ctrl+C)');
  writeln;



  while true do
  begin
    if not WTSEnumerateSessions(WTS_CURRENT_SERVER,0,1,PWTS_SESSION_INFO(pInfo),count) then
    begin
      writeln(GetErrorString(GetLastError));
      halt(1);
    end;
    try
      for i := 0 to count -1 do
      begin
        writeln(IntToStr(i)+'.');
        writeln('Session: '+ pInfo[i].pWinStationName);
        writeln('ID: '+IntToStr(pInfo[i].SessionId));
        write('State: ');
        case pInfo[i].State of
          WTSActive : writeln('WTSActive');
          WTSConnected    : writeln('WTSConnected');
     WTSConnectQuery : writeln('WTSConnectQuery');
     WTSShadow    : writeln('WTSShadow');
     WTSDisconnected : writeln('WTSDisconnected');
     WTSIdle    : writeln('WTSIdle');
     WTSListen    : writeln('WTSListen');
     WTSReset    : writeln('WTSReset');
     WTSDown    : writeln('WTSDown');
     WTSInit    : writeln('WTSInit');
   else
        writeln('???');
        end;
      end;
    except
      writeln('Exception caught');
    end;
    writeln;

    WTSFreeMemory(pInfo);

    Sleep(5000);
  end;
end.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Tray Icon, Service und Vista

  Alt 26. Jul 2007, 19:11
*push*

Wie bekommt man denn jetzt die nette Delphi-Vorlage TServiceApplication Vista-fähig? Selbst ohne jeden Inhalt verursacht sie beim Installieren einen Fehler.

Grüße

Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Tray Icon, Service und Vista

  Alt 26. Jul 2007, 20:12
Zitat von Codewalker:
verursacht sie beim Installieren einen Fehler.
Lass mich raten, das Ei hat zu lange gekocht und ist hart geworden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#17

Re: Tray Icon, Service und Vista

  Alt 26. Jul 2007, 21:37
Ja, schon verstanden, Fehler ist etwas allgemein.. aber Vista sagt mir nicht mehr. Es kommt der Standarddialog, dass das Programm aufgrund eines Fehler geschlossen werden musste und er sucht nach Lösungen (die er natürlich nicht findet - schon klar).
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf