Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   In einem Dienst bemerken wenn sich ein User anmeldet? (https://www.delphipraxis.net/62641-einem-dienst-bemerken-wenn-sich-ein-user-anmeldet.html)

Christian Seehase 7. Feb 2006 19:51

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Moin Sharky,

Zitat:

Zitat von Sharky
ich habe eine etwas ungewöhnliche Aufgabe.

Ich muss bei mir in der Firma den Leuten die Möglichkeit geben sich Software auf den rechnern installieren zu können.

Also für mein Verständnis nicht so wirklich ungewöhlich, ausser die Leute bekommen, beispielsweise, eine CD in die Hand gedrückt, und sollen selber installieren.
In welcher Form liegen denn die Installationen vor?

Ich kenne das bisher allerdings auch nur so, wie kalmi das beschrieben hat, über ein Verteilungssystem (z.B. Microsoft SMS-Server, NetInstall)
Grob beschrieben läuft hier auf den Rechner ein Client (i.d.R. auch als Dienst), der entweder regelmässig nachschaut, ob für den Rechner/User etwas zur Installation ansteht, oder durch die Anmeldung gestartet wird und prüft.

thomasw 7. Feb 2006 20:40

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Es gibt keine verlaessliche Methode, herauszufinden wann ein user eingeloggt ist. Die Methode, die u.a. auch Windows verwendet, ist dass eine user login applikation bei jedem login gestartet wird, die u.a. services (umpnpmgr fuer Geraeteinstallationen) von dem logon mitteilen. Da du aber die userinit.exe von Windows nicht veraendern kannst, musst du ein separates Initialisierungsprogramm schreiben, das deinen Service vom Login benachrichtigt und bei jedem Login gestartet wird. Den Pfad zu dieser Anwendung kannst du in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon im String "Userinit" hinzufuegen. Der Registry-Value enthaelt eine Reihe von Anwendungen, die durch Kommas getrennt sind und alle bei einem Login gestartet werden. Das ist die einzige zuverlaessige und gute Methode, einen Service ueber einen Login zu benachrichtigen. Wie gesagt, diese Methode wird auch von Windows verwendet um gewisse Services zu benachrichtigen.

Olli 7. Feb 2006 21:35

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Wie wäre es mit einer Logon-Notification-DLL die ein Event setzt und so dem Service mitteilt, was Sache ist? Das ist zumindest wie es MS vorgesehen hat und wie es kommerzielle Anbieter machen.

thomasw 7. Feb 2006 21:41

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Stimmt, die hab ich total vergessen. Wie gesagt, die Methode dich ich erlaeutert habe wird z.b. fuer den umpnpmgr service verwendet.

Sharky 8. Feb 2006 06:20

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Hai ihr,

danke für die vielen Antworten. :-D
Ich werde mich mal mit den Methoden die thomasw und Olli vorgeschlagen haben beschäftigen.


P.S.:
Das ganze ist eine kleine Firma wo sich zum einen die Anschaffung einer "Verteilungssoftware" nicht lohnen würde und zum anderen bin ich dort nur 17 Stunden/Woche beschäftigt. Darum ist es nicht praktikabel wenn ich jedes mal weil sich ein Andwender etwas von CD intallieren muss in die Frima fahre um das schnell zu machen. Daher meine Idee mit dem Installationskonto welches immer wieder mit einem neuen Kennwort versorgt wird.

Basilikum 8. Feb 2006 07:35

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Zitat:

Zitat von Sharky
Ich werde mich mal mit den Methoden die thomasw und Olli vorgeschlagen haben beschäftigen.

Du bist dir aber bewusst, dass diese beiden Methoden nur funktionieren, wenn der Service auf dem selben physikalischen Rechner läuft, auf dem sich der User interaktiv anmeldet (sprich: der Service kann nicht mehr auf dem DC laufen, sondern muss auf jeder Workstation vorhanden sein) ?

Olli 8. Feb 2006 08:55

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Ist es aus deiner Sicht praktikabel das Installationskonto als lokalen Admin zu haben? Wenn ja, dann würde ich vorschlagen, daß du dir mal meine AgreementGINA2 anschaust. Wenn du die ein wenig umschreibst, hast du genau was du willst. Aktuell gibt es dort ein Gastkonto, für welches das Paßwort und so weiter im Secret Stash abgespeichert wird. Somit kann jeder sich jederzeit als Gast einloggen, hat dann aber eingeschränkte Rechte.
Wenn du allerdings irgendwie die GINA "freischalten mußt" vom DC aus, damit das Installationskonto erlaubt ist, wird's vertrackter.

Zitat:

Zitat von Basilikum
Zitat:

Zitat von Sharky
Ich werde mich mal mit den Methoden die thomasw und Olli vorgeschlagen haben beschäftigen.

Du bist dir aber bewusst, dass diese beiden Methoden nur funktionieren, wenn der Service auf dem selben physikalischen Rechner läuft, auf dem sich der User interaktiv anmeldet (sprich: der Service kann nicht mehr auf dem DC laufen, sondern muss auf jeder Workstation vorhanden sein) ?

Das ist fraglich, da es ja auch andere (und komplexere) IPC-Mechanismen gibt als das vorgeschlagene gemeinsame Event. Er kann also sehr wohl damit klarkommen, wenn er den richtigen Mechanismus wählt (z.B. über Mailslots, Pipes oder gar Sockets).

Christian Seehase 8. Feb 2006 18:41

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Moin Sharky,

wenn sich eine grosse Softwareverteilungslösung nicht anbietet (von wie vielen Clients die versorgt werden müssten ist denn die Rede?):
- Schau mal in der Freeware-Rubrik, da hatte jemand ein Installationstool gepostest
- Wäre es nicht denkbar, dass die Datenträger in der Firma sind, und Du die Installtion Remote (z.B. per VNC) durchführst? Dafür müsstest Du dann allerdings wohl einen VPN-Zugang zum Firmennetz haben :?

Luckie 26. Feb 2006 22:35

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Juhu, ich habe die Antwort. Gerade im CPlusPlus Forum gefunden und an dich erinnert: http://www.c-plusplus.de/forum/viewt...is-138505.html

Sharky 27. Feb 2006 06:40

Re: In einem Dienst bemerken wenn sich ein User anmeldet?
 
Zitat:

Zitat von Luckie
... und an dich erinnert : ...

Super. Das werde ich mir doch gleich einmal genauer ansehen.
Danke :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz