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
Seite 2 von 3     12 3      
samso

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

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 15: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 15:40 Uhr) Grund: Erweiterung zum Thema UAC
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

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

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 15: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
 
#13

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 16: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
Online

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

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 17: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
 
#15

AW: Anwendung als anderer Benutzer starten

  Alt 6. Aug 2013, 23: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
 
#16

AW: Anwendung als anderer Benutzer starten

  Alt 7. Aug 2013, 08: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
Benutzerbild von Dalai
Dalai
Online

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

AW: Anwendung als anderer Benutzer starten

  Alt 7. Aug 2013, 11:41
In Ergänzung zu jfheins: Ich hatte das Problem ebenfalls.

Habe auch schon die setup.exe umbenannt, leider wird diese dann auch nicht gestartet.
Und was sagt GetLastError nun?

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Anwendung als anderer Benutzer starten

  Alt 7. Aug 2013, 12:48
Nein ist sie nicht! Ohne Manifest. Habe auch schon die setup.exe umbenannt, leider wird diese dann auch nicht gestartet.
Steht in den Eigenschafter der Exe sowas wird "update", "install". Dann ist es dort das gleiche.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
azwa66

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

AW: Anwendung als anderer Benutzer starten

  Alt 7. Aug 2013, 14:20
In Ergänzung zu jfheins: Ich hatte das Problem ebenfalls.

Habe auch schon die setup.exe umbenannt, leider wird diese dann auch nicht gestartet.
Und was sagt GetLastError nun?

MfG Dalai
740 --> ERROR_ELEVATION_REQUIRED!

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.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

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

AW: Anwendung als anderer Benutzer starten

  Alt 7. Aug 2013, 14:28
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 16:15 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