![]() |
AW: Anwendung als anderer Benutzer starten
Da ich diese Funktion bereits getestet habe, kann ich garantieren, dass keine UAC-Abfrage kommt. Das macht auch keinen Sinn, weil das Passwort des Administrators bereits in der Funktion übergeben wird.
Der UAC-Mechanismus ist weiterhin sinnvoll, weil das Ganze ja nur dann funktioniert, wenn dem Programm das Passwort bekannt ist. Wer ein schwaches Admin-Passwort benutzt, der hat natürlich in jedem Fall ein Problem. Sämtliche Remote-Wartungsfunktionen rufen ebenfalls keine UAC-Dialog auf. Ein möglicher Angreifer kann also bei einem schwachen Admin-Passwort über diverse Wege auf das System zugreifen. |
AW: Anwendung als anderer Benutzer starten
Zitat:
MfG Dalai |
AW: Anwendung als anderer Benutzer starten
Zitat:
Hier mal ein Codeschnipsel: function CreateProcessWithLogonW( lpUsername, lpDomain, lpPassword:PWideChar; dwLogonFlags:dword; lpApplicationName: PWideChar; lpCommandLine: PWideChar; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: tSTARTUPINFO; var lpProcessInformation: TProcessInformation): BOOL; stdcall; external 'advapi32.dll'; function StartProgramm(Benutzer:string;Passwort:string;Doma in:string;EXE:string):boolean; var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin result:=false; FillChar (StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); if CreateProcessWithLogonW(StringToOleStr(Benutzer),S tringToOleStr(Domain), StringToOleStr(Passwort), 0, StringToOleStr(Exe), nil, 0, nil, nil, StartupInfo, ProcessInfo) then result:=true; end; Aufruf Startprogramm('admin', 'admin', '', 'c:\temp\test.exe') --> funktioniert :-D Aufruf Startprogramm('admin', 'admin', '', 'c:\temp\setup.exe') --> funktioniert nicht!!! :( Mache ich da was falsch? Hat jemand ein Beispiel für CreateProcessAsUser??? Danke |
AW: Anwendung als anderer Benutzer starten
Ich würde mal GetLastError benutzen - ggf. in Verbindung mit SysErrorMessage, um rauszufinden, warum etwas nicht funktioniert, gerade bei API-Funktionen. Zum anderen empfehle ich, DELPHI-Tags (das Helmsymbol im Editor beim Antworten) für Code hier im Forum zu verwenden, um Code lesbarer zu machen und von Interpretationen/Umwandlung in Smilies o.ä. durch das Forum auszunehmen.
MfG Dalai |
AW: Anwendung als anderer Benutzer starten
Ist das sie gleiche exe? Hat die ein Manifest? Geht es, wenn du die setup.exe umbenennst?
Es gibt nämlich eine Sonderbehandlung für Dateien wie "setup.exe", "install.exe" usw. :wink: |
AW: Anwendung als anderer Benutzer starten
Zitat:
|
AW: Anwendung als anderer Benutzer starten
In Ergänzung zu jfheins:
![]() Zitat:
MfG Dalai |
AW: Anwendung als anderer Benutzer starten
Zitat:
|
AW: Anwendung als anderer Benutzer starten
Zitat:
hab mal gegoogelt: Being an administrator means nothing in an UAC-aware operating system! You do not run with the highest privileges even if you are an Admin here. The CreateProcess Windows API will always fail if a non-elevated application under Vista/2008/Win7 attempts to launch another application whose manifest requires elevation. GetLastError will return 740 (ERROR_ELEVATION_REQUIRED) in this case. |
AW: Anwendung als anderer Benutzer starten
OK, nun musst du nur noch rausfinden, warum die EXE diese Elevation ersucht bzw. braucht. Die Versionsinformationen (vor allem die Beschreibung) sind eine Möglichkeit, der Name der EXE eine weitere, das Manifest (oder deren Fehlen) eine andere - all das wurden ja bereits genannt. Da du aber oben "setup.exe" schriebst: sowas verlangt eben nach Adminrechten, übrigens schon seit Win2k. Wie hast du die setup.exe denn benannt durch das Umbenennen?
MfG Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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