Entwickler-Ecke
Windows API - Dienst ließt falschen Benutzername aus
mexx - Mo 18.12.06 13:34
Titel: Dienst ließt falschen Benutzername aus
Ich habe einen Dienst der neben anderen Aufgaben den Benutzername ausliest. Statt jedoch den Benutzername des angemeldeten Users auszulesen, ließt die Funktion "SYSTEM" aus, weil der Dienst unter SYSTEM läuft. Wie bekomme ich den aktuell angemeldeten Benutzer ausgelesen? Eine andere Funktion? Die Installation des Dienstes vielleicht ändern? Oder das der Dienst unter den jeweiligen Benutzer läuft statt unter System?
Hier der Code zum Auslesen des Benutzers.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function GetCurrentUserName: string; const cnMaxUserNameLen = 254; var sUserName: string; dwUserNameLen: DWORD; begin dwUserNameLen := cnMaxUserNameLen - 1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen); Result := sUserName; end; |
Vielen Dank für die Tipps!
Moderiert von
Christian S.: Topic aus Sonstiges (Delphi) verschoben am Mo 18.12.2006 um 15:31
jaenicke - Mo 18.12.06 16:16
Aber Vorsicht! Ich hab mir den anderen Thread jetzt nicht genauer angesehen. Aber du solltest das unbedingt auch unter Vista testen, (vorausgesetzt, dein Programm willst du auch anderen weitergeben). Denn dies ist eventuell ein Zugriff, der unter Vista nicht mehr möglich ist. Unter Windows XP konnte man noch Dienste unsauber schreiben, die dann auch auf den Desktop und so Zugriff hatten. Und sowas ist unter Vista nicht mehr möglich, jedenfalls nicht mit non-admin-Rechten.
Ob das jetzt hier zutrifft, kA, ich wollts nur gesagt haben. BTW: Hier im MSDN stehen die Kompatibilitätshinweise, die mir beim Redesign meiner Software sehr geholfen haben:
http://www.microsoft.com/germany/msdn/library/windows/windowsvista/WindowsVistaFuerEntwicklerKochbuchZurAnwendungskompatibilitaet.mspx?mfr=true
(Es liefen 4 Programme und 7 kleinere Tools nicht mehr unter Vista... Ich habe jetzt ca. 1 Jahr dran gearbeitet, nachdem ich die Beta 1 von MS bekommen hatte. Natürlich sind das dann auch gleich verbesserte neue Versionen. Naja, 94% done, Beta 2 Versionen laufen "schon" korrekt.)
Delete - Mo 18.12.06 17:09
Es gibt nicht den angemeldeten Benutzer. Welches wäre denn der aktuell angemeldete Benutzer, wenn FastUserSwitching aktiviert ist und damit zum Beispiel drei Benutzer angemeldet sind?
mexx - Mo 18.12.06 17:16
Auch wieder war. Hintergrund des Dienstes war der Folgende. Die Dokumentation der IP-Adressen in dem Unternehmen ist nicht vorhanden. Um die Domainbenutzer zu erfassen und damit auch gleich einen IP-Historie zu haben, gibts ne kleine Anwendung, die nach der Anmeldung gestartet wird und die Daten in die Db schreiben. Andere Netzwerkteilnehmer wie Access Pionts und Printserver werden manuell erfasst. Damit ich nun weis, wann ein Aussendienst im Netzwerk ist und dafür welche IP verwendet, weil manche clever genug sind IPs zu ändern, wird ein kleiner Dienst installiert, der nur dann die Infos in die DB schreibt, wenn er in unseren LAN ist. Da die Aussendienstler sicherlich kein Userswitching betreiben, wirds wohl gehen. :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!