AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Windows Login in eigener Applikation aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Login in eigener Applikation aufrufen

Ein Thema von KNDelphi · begonnen am 12. Jul 2012 · letzter Beitrag vom 13. Jul 2012
Antwort Antwort
Seite 2 von 2     12   
KNDelphi

Registriert seit: 29. Mai 2012
17 Beiträge
 
#11

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 07:49
Danke an alle, ich komm der Sache schon langsam näher

@Dalai
Wie sieht denn der Aufruf von ShellExecuteEx bzw. das ShellExecuteInfo aus?

Ich habe es jetzt mal mit dem normalen ShellExecute gemacht, das funktioniert soweit auch, allerdings kann ich hier den Benutzernamen nicht auslesen oder etwa doch?!

MfG

KNDelphi
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#12

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 08:11
Wenn Du zu Fuß
Code:
runas /user:[user]
durchführst, kannst du über set die Umgebungsvariablen anzeigen. Da findest Du z.B. USERNAME, USERDOMAIN usw.
Das müsste auch per WinAPI Code
Code:
GetEnvironmentVariable
gehen.
Gruß, Jo
  Mit Zitat antworten Zitat
KNDelphi

Registriert seit: 29. Mai 2012
17 Beiträge
 
#13

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 09:18
Leider ist bis jetzt nicht wirklich das dabei was ich gesucht habe...
Ich befürchte, dass es soetwas gar nicht gibt

Trotzdem vielen Dank für eure Hilfe

MfG
KNDelphi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 10:57
http://michael-puff.de/Programmierun...dentials.shtml

Und überprüfen ob die Eingaben zu einem Benutzerkonto gehören kannst du mit der Unit http://michael-puff.de/Programmierung/Delphi/Units -> SSPIValidatePassword.pas
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 11:09
Sowohl bei Jumpy als auch Luckies erstem Link sei noch empfohlen, ein ZeroMemory (bzw. ich glaube da gibt es noch eine Extra-Version für Passwörter?) nach dem Aufruf und der Verarbeitung einzubauen. Nach dem Funktion-Verlassen bzw. dem FreeMem kann das Passwort ja sonst immer noch im Speicher stehen (man sollte sich da auch nicht auf empirisches Compilerwissen verlassen), und genau deshalb sollte man auch sparsam mit der Verwendung so wichtiger Passwörter sein
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#16

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 11:23
OK, beim x-ten mal durchlesen und nach Furtbichlers Kommentar hab ich es glaub ich auch verstanden. Es geht darum, dass Passwort sogar vor dem Programmierer zu verstecken, sprich er soll keine Möglichkeit haben, das in einer Variable zu speichern und an anderer Stelle weiterzuverwenden oder sich nach Hause zu schicken.

Selbst wenn es eine Methode/Komponente/was weiß ich gäbe, die das könnte, wer garantiert dafür, dass die nicht auch schon ein Hintertürchen eingebaut hat? Hier passt glaub ich der Spruch: "Irgendeinen Tod muss man sterben" bzw. abgewandelt: "Irgendwann muss man mal jemandem Vertrauen".

Oder der Kunde, der das haben will, kann ja sich selber ausdenken wie das geht, das in eine .dll packen und diese zur Verfügung stellen. Dann weiß er sicher was mit seinen Passworten passiert. Sicher???
Ralph
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 11:32
.. wenn ich das richtig verstanden habe, dann macht das auch nur Sinn
wenn User-X im Windows-System abgemeldet ist und als User-Y die Applikation starten soll. User-Y soll dann authentifiiziert werden.

Wenn User-X die Applaktion nutzen soll, dann muss doch die Applikation überprüfen
wer im System angemeldet ist (User-X) und ob dieser User berechtigt ist die Applikation zu nutzen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
KNDelphi

Registriert seit: 29. Mai 2012
17 Beiträge
 
#18

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 11:51
@Luckie
Das ist schon fast das was ich gesucht habe
Nur muss ich hier ebenfalls das Passwort kurz speichern, aber ich werde diese Lösung jetzt implementieren

@Jumpy
Danke für den Hinweis

@Klaus
Es geht mir nicht um Berechtigungen, ich möchte lediglich den Namen einer Person speichern, die innerhalb des Programms eine bestimmte Aktion ausführen. Der Name soll aber nicht beliebeig eingegeben werden sondern ein gültiges Windows-Login sein, da es um wichtige Daten geht.

MfG

Geändert von KNDelphi (13. Jul 2012 um 11:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#19

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 16:01
@Dalai
Wie sieht denn der Aufruf von ShellExecuteEx bzw. das ShellExecuteInfo aus?
Ziemlich einfach:
Delphi-Quellcode:
function TMainForm.RunAs(const verb: string): Boolean;
var sei: TShellExecuteInfo;
begin
    FillChar(sei, SizeOf(sei), 0);
    sei.cbSize:= SizeOf(sei);
    sei.Wnd:= Self.Handle;
    sei.fMask:= SEE_MASK_FLAG_DDEWAIT (*OR SEE_MASK_FLAG_NO_UI OR SEE_MASK_NOCLOSEPROCESS*);
    sei.lpVerb:= PChar(verb);
    sei.lpFile:= PChar(Application.ExeName);
    sei.lpParameters:= PChar('runas ' + IntToStr(Self.Handle));
    sei.nShow:= SW_SHOWNORMAL;
    Result:= ShellExecuteEx(@sei);
end;
Als Verb kommt entweder 'runas' (bis einschließlich XP) oder 'runasuser' (ab Vista) rein.

Zitat:
allerdings kann ich hier den Benutzernamen nicht auslesen oder etwa doch?!
Den Benutzernamen kannst du mit ShellExecute(Ex) überhaupt nicht auslesen. ShellExecute(Ex) führt Programme aus. Das können andere Programme sein oder wie im Beispiel oben das eigene Programm oder auch (mit einem Programm verknüpfte) Dokumente/Dateitypen. Wenn man das Verb 'runas' oder 'runasuser' verwendet, so kann man die Ausführung mit einem anderen Nutzer erledigen lassen.

Aber ich denke, ich sehe jetzt, dass du in eine andere Richtung willst/musst, weshalb dir ShellExecuteEx nicht weiterhelfen dürfte.

MfG Dalai
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz