Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

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

AW: Windows Login in eigener Applikation aufrufen

  Alt 13. Jul 2012, 15: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