AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung als anderer Benutzer starten

Ein Thema von azwa66 · begonnen am 6. Aug 2013 · letzter Beitrag vom 7. Aug 2013
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 11:06
Aber genau darum geht es doch bei der UAC, für Admin-Rechte muss man sich nochmals als Benutzer mit Adminrechten legitimieren
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#2

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 13:40
Aber genau darum geht es doch bei der UAC, für Admin-Rechte muss man sich nochmals als Benutzer mit Adminrechten legitimieren
So soll es ja auch sein. Nur wäre es m.M. nach schön wenn das Legitimieren über eine Funktion durchführbar wäre.
Über die Funktionen loginUser und ImpersonateLoggedOnUser kann man sich ja auch als anderen Benutzer legitimieren. Leider läuft das anschließende ShellExecuteEx wieder in der "Umgebung" des einfachen (ursprünglichen) Benutzers.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#3

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 14:07
Ja, das geht. Da das Passwort für den Administrator dem Programm bekannt ist, kann sich das Programm ganz normal anmelden. Am einfachsten geht das mit CreateProcessWithLogonW. Es gibt auch ein entsprechendes Kommandozeilentool "runas".
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 14:18
Ja, das geht. Da das Passwort für den Administrator dem Programm bekannt ist, kann sich das Programm ganz normal anmelden. Am einfachsten geht das mit CreateProcessWithLogonW. Es gibt auch ein entsprechendes Kommandozeilentool "runas".
Und trotzdem wird bei eingeschaltetem UAC die UAC-Abfrage kommen.

Wenn nicht, dann würde mich das beunruhigen und das gesamte UAC-Geraffel ad absurdum führen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 14:30
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.

Geändert von samso ( 6. Aug 2013 um 14:40 Uhr) Grund: Erweiterung zum Thema UAC
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#6

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 14:36
Ja, das geht. Da das Passwort für den Administrator dem Programm bekannt ist, kann sich das Programm ganz normal anmelden. Am einfachsten geht das mit CreateProcessWithLogonW. Es gibt auch ein entsprechendes Kommandozeilentool "runas".
Und trotzdem wird bei eingeschaltetem UAC die UAC-Abfrage kommen.
Das nehme ich auch an. Aber fragt dieser Dialog nochmals nach dem Passwort, wenn das dem Programm bereits bekannt ist? Ich weiß es nicht, weil ich das nie ausprobiert habe, weil ich CreateProcessXY bislang nicht verwendet habe.

MfG Dalai
  Mit Zitat antworten Zitat
azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#7

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 15:11
Ja, das geht. Da das Passwort für den Administrator dem Programm bekannt ist, kann sich das Programm ganz normal anmelden. Am einfachsten geht das mit CreateProcessWithLogonW. Es gibt auch ein entsprechendes Kommandozeilentool "runas".
Irgendwie bekomme ich das nicht hin! "Normale" Programm starten über CreateProcessWithLogonW aber eine setup.exe wird nicht ausgeführt!

Hier mal ein Codeschnipsel:

function CreateProcessWithLogonW(
lpUsername,
lpDomain,
lpPasswordWideChar;
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
Aufruf Startprogramm('admin', 'admin', '', 'c:\temp\setup.exe') --> funktioniert nicht!!!

Mache ich da was falsch?

Hat jemand ein Beispiel für CreateProcessAsUser???

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#8

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 16:08
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 22:05
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.
  Mit Zitat antworten Zitat
azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#10

AW: Anwendung als anderer Benutzer starten

  Alt 7. Aug 2013, 07:30
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.
Nein ist sie nicht! Ohne Manifest. Habe auch schon die setup.exe umbenannt, leider wird diese dann auch nicht gestartet.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:40 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