![]() |
Passwort automatisch eingeben
Hallo liebes Forum,
mal wieder eine Frage. Ich möchte ein Programm als Administrator und mittels runAs starten. Windows fordert mich daraufhin automatisch auf das Administratorpasswort einzugeben. Gibt es hier eine Möglichkeit das Passwort automatisch eingeben zu lassen? Ich habe eine Batch geschrieben, und mit der funktioniert das ganz einwandfrei. Hier der Code falls den jemand benötigt:
Code:
Für Delphi habe ich mir erstmal den Programmaufruf mit ShellExecute geschrieben. Das funktioniert soweit. Nur für die automatische Passworteingabe habe ich keine Lösung.
@if (@CodeSection == @Batch) @then
@echo off start runas /user:administrator C:\temp\... CScript //nologo //E:JScript "%~F0" goto :EOF @end WScript.CreateObject("WScript.Shell").SendKeys("password{ENTER}"); Jemand eine Idee? Viele Grüße |
AW: Passwort automatisch eingeben
Suchmaschine: runas password
![]() Zweiter Treffer: ![]() Abgeleitet von: ![]() Von mir ausprobiert? Nö ;-) Aber eventuell was in Richtung Problemlösung. |
AW: Passwort automatisch eingeben
Hallo Danke erstmal. Das entspricht aber 1:1 meine Lösung von oben und ist für eine Batch vorgesehen. Ich suche allerdings nur noch eine Lösung für die Weitergabe des Passworts unter Delphi.
Grüße |
AW: Passwort automatisch eingeben
Meinst Du so etwas?
Delphi-Quellcode:
Beispiel-Aufruf:
procedure RunAsExec(hWnd: HWND; aFile: string; aParameters: string);
var SEI: TShellExecuteInfo; begin FillChar(SEI, SizeOf(SEI), 0); SEI.cbSize := sizeof(SEI); SEI.Wnd := hWnd; SEI.fMask := SEE_MASK_NOCLOSEPROCESS; SEI.lpVerb := 'runas'; SEI.lpFile := PChar(aFile); SEI.lpParameters := PChar(aParameters); SEI.nShow := SW_SHOWNORMAL; if not ShellExecuteEx(@SEI) then RaiseLastOSError; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var DateiName: string; Parameter: string; begin DateiName := 'Programm.exe'; Parameter := ' ' + 'Benutzername' + ' ' + 'Passwort'; RunAsExec(Application.Handle, DateiName, Parameter); end; |
AW: Passwort automatisch eingeben
Mit UAC-Dialogen kann man aus guten Gründen nicht interagieren. Aber es gibt natürlich andere Möglichkeiten, Prozesse als anderer Nutzer mit Passwort zu starten:
![]() ![]() ![]() Regards Dalai |
AW: Passwort automatisch eingeben
Nein sowas meine ich nicht.
Mit Batch rufe ich zuerst mein Programm als Administrator auf. Das ganze funktioniert in Delphi ganz einfach mit ShellExecute. Danach öffnet die Windows Konsole ein Fenster in dem ich das Administratorpasswort eingeben soll. In der Batch kann ich mit SendKey das Passwort automatisch eingeben lassen und danach auch automatisch mit {ENTER} bestätigen lassen. In Delphi öffnet es mir ebenfalls die Konsole mit der Aufforderung das Administratorpasswort einzugeben. Hier finde ich allerdings keine Möglichkeit das Passwort automatisch einzugeben und zu bestätigen. Hast du verstanden wie ich das meine? Ziemlich schwer hier ordentlich zu erklären... Gruß |
AW: Passwort automatisch eingeben
Ich hoffe ich habe Dich richtig verstanden: Ein Programm unter Angabe eines Logonnames plus Password starten, ohne das UAC erscheint.
Ich teste das heute Abend mal durch, mein Schnippsel lief zumindest unter XP noch so wie beschrieben, Programm startet ohne Aufforderungen seitens Windows. |
AW: Passwort automatisch eingeben
Also:
Nachdem meine erste Antwort nach genauerem Lesen eigentlich überflüssig war (ist halt doch irgendwie zu warm hier bei 39,3° im Schatten), derweil ich einfach mal etwas genauer hätte lesen sollen, bevor ich antworte. Sorry, versuche mich zu bessern ;-) Mal langsam: Batch funktioniert wie gewünscht von der Konsole.
Code:
gibt das Passwort wie gewünscht weiter.
WScript.CreateObject("WScript.Shell").SendKeys("password{ENTER}");
Beim ShellExecute aus Delphi heraus scheint dies aber nicht zu funktionieren. Wunsch ist es: Batchdatei weiterhin aus Delphi aufrufen und das Passwort wird nicht von WScript im Batch selbst "übergeben", sondern dieser Teil wird von Delphi übernommen. Keine Ahnung, ob es hilft und wie das mit 'nem ShellExecute zusammenpassen könnte: Stöbere bitte mal bitte im Umfeld von ![]() Eventuell kannst Du die Batchdatei aber auch erweitern: Schau mal bitte hier: ![]() Jetzt nur als absolut ungetestete Idee:
Code:
Mit etwas Glück musst Du dann in Deinem bisherigen ShellExecute nur das Administratorpasswort als ersten Parameter übergeben.
@if (@CodeSection == @Batch) @then
@echo off :: Parameter %1 der Batchdatei enthält dass Passwort des Administrators für den Server 01 und wird hier gespeichert. cmdkey /add:server01 /user:administrator /pass:%1 start runas /user:administrator C:\temp\... CScript //nologo //E:JScript "%~F0" :: Die gespeicherte Anmeldung für den Administrator wird wieder gelöscht. cmdkey /delete:server01 goto :EOF @end |
AW: Passwort automatisch eingeben
Hallo Delphi.Narium immer noch nicht ganz. Das mit der Batch hast du richtig verstanden. Allerdings soll die Batch Datei komplett entfallen und alles soll aus Delphi herraus passieren.
Das Delphi Projekt siht bis jetzt so aus. Nicht von den ganzen uses verwirren lassen das ich noch vom vorherign Projekt ;)
Delphi-Quellcode:
Hier soll einfach nur noch eine Funktion implementiert werden die die Aufgabe von SendKey aus der Batch übernimmt da auch hier nach dem ausführen die Eingabe des Adminpassworts geforder wird.
program Project3;
{$APPTYPE CONSOLE} {$R *.res} uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.ExtCtrls, SHELLAPI, System.IOUtils, Registry, ShlObj, WinInet, System.UITypes, TlHelp32, WinSock; begin try Shellexecute(0, 'open', PChar('runas'), PChar('/user:administrator C:\temp\...'), nil, SW_SHOW); except end; end. Wenn ich aber KodeZwerg richtig verstanden habe geht das leider nicht oder wie? Gruß |
AW: Passwort automatisch eingeben
Teste doch einfach mal meinen Code, ich kann es erst heut abend. Etwaige sonder-parameter habe ich bei mir nicht berücksichtigt.
Mein Schnippsel bezieht sich nur darauf: Ein Programm.exe unter dem Kontext von Benutzername plus Passwort starten ohne UAC. //edit Ps: Nicht die Leerzeichen beim Namen+Passwort vergessen! Deshalb auch mein kriminelles Beispiel für Code :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr. |
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