AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdminis
Thema durchsuchen
Ansicht
Themen-Optionen

Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdminis

Offene Frage von "Exceeder"
Ein Thema von Exceeder · begonnen am 22. Apr 2009 · letzter Beitrag vom 23. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Exceeder

Registriert seit: 29. Mai 2006
24 Beiträge
 
#1

Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdminis

  Alt 22. Apr 2009, 08:23
Hallo zusammen,

nachdem ich nun mein Installationsprogramm und das Administrationsprogramm brav per UAC in den Administratormodus "elevated" habe, gibt es nun ein kleines neues Problem: Und zwar, wenn das Setup endet gibt es ja immer diese Checkbox "Programm xyz jetzt starten". Im Prinzip funktioniert das auch ganz gut (habe es jetzt per ShellExecute 'open' gemacht), aber das Problem ist, dass das Hauptprogramm nun im Kontext des Administrators gestartet wird. Gibt es irgendeine Möglichkeit das Hauptprogramm im Kontext des aktuell angemeldeten Benutzers zu starten?

Das Setupprogramm wird auch für Updates aufgerufen (das Hauptprogramm lädt das Update herunter und übergibt es an das Setupprogramm, dieses installiert als Administrator dann das Update). Nun soll nach dem Update das Hauptprogramm natürlich sofort wieder gestartet werden.

Also wie komme ich in den Benutzermodus bzw. in den Kontext des aktuell angemeldeten Benutzers zurück?

Habe gestern bereits im Forum und der Code-Library geschmökert, bin aber leider über nichts passendes gestolpert.

Exceeder
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#2

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 08:30
Du kannst doch einfach den aktuell angemeldeten Benutzer auslesen und den Prozess unter dessen Kontext starten, oder habe ich deine Frage nicht richtig verstanden?

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 08:46
Ein (der offizielle) Weg führt über den Task Scheduler (Aufgabenplanung).
Ansonsten müsstest du dir das Token des Benutzerkontos holen, es in ein eingeschränktes Token konvertierten und dieses verwenden, um den Prozess zu starten.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:00
Hat dein Hauptprogramm auch ein Vista-Kompatibles Manifest? Dort kann doch angegeben werden was das Programm benötigt (Admin, AsInvoker, ...). Und ein ShellExecute sollte diese Einstellungen berücksichtigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:07
@Bernhard Geyer:
sein Programm (Setup) läuft schon als Admin,
aber er möchte jetzt von diesem aus ein anderes Programm ohne diese zusätzlichen Rechte starten
$2B or not $2B
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:18
In Vista gibt es - falls die UAC aktiv ist - für jedes Admintoken ein verknüpftes eingeschränktes Token : das Linked Token.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:24
Zitat von himitsu:
@Bernhard Geyer:
sein Programm (Setup) läuft schon als Admin,
aber er möchte jetzt von diesem aus ein anderes Programm ohne diese zusätzlichen Rechte starten
Ich hab ja mit Hauptprogramm nicht den Installer gemeint. Dieser muss/müsste auch ein passendes Manifest besitzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:37
Zitat von Bernhard Geyer:
Ich hab ja mit Hauptprogramm nicht den Installer gemeint. Dieser muss/müsste auch ein passendes Manifest besitzen.
Die Rechte werden vererbt (das vom Setup gestartete Programm wird auch mit administrativen Rechten gestartet). Diese "Vererbung" will er aber aufbrechen (braucht man zum Beispiel, wenn man aus einem Setup ein Programm startet und das Microsoft Logo-Programm erfüllen will).
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:43
Zitat von nicodex:
Die Rechte werden vererbt (das vom Setup gestartete Programm wird auch mit administrativen Rechten gestartet).
AFAIK werden die Rechte nur bei Prozessstart mit CreateProcess vererbt. Bei Start mit ShellExecute wirkt das Vista-Manifest. Oder liege ich hier falsch
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Exceeder

Registriert seit: 29. Mai 2006
24 Beiträge
 
#10

Re: Neuer Prozess im Benutzermodus (wenn Quellprogramm asAdm

  Alt 22. Apr 2009, 09:56
Hi,

da ist man mal kurz weg und hat gleich soviele Antworten, wow.

Also die EXE-Dateien welche ich starte haben natürlich alle ein gültiges Vista Manifest. Das Installationprogramm läuft als "asAdministrator" und das Hauptprogramm als "asInvoker". Das Problem ist nur, ist der Invoker Admin, dann läuft das Hauptprogramm auch als Admin.

Die Rechte werden scheinbar sowohl bei ShellExecute als auch bei CreateProcess verrebt (zumindest solange man nichts dagegen unternimmt). Nur weiß ich leider nicht, was ich dagegen unternehmen muss, deshalb meine Frage hier.

Bei CreateProcess scheint es zum Beispiel auch so zu sein, dass ein Programm welches im normalen Benutzerkontext arbeitet keinen Prozess erzeugen kann, welcher laut Manifest Administratorrechte benötigt. CreateProcess schlägt dann fehl (mit welcher Meldung genau weiß ich nicht mehr). Diesen Fall habe ich ja zum Beispiel, wenn das Hauptprogramm das Updatepaket herunterlädt und anschließend dann mit Setup.exe -update "MyZipPackage.zip" aufruft. Wenn man diesen Aufruf mit ShellExecute vornimmt erscheint korrekt die UAC und fragt den Benutzer, ob er das ganze zulässen möchte und fordert noch das Administratorpasswort an.

Hat soetwas denn noch niemand gemacht?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:12 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