Entwickler-Ecke

Windows API - Eigenes Programm unter einem anderen Benutzer starten


Nico80 - Fr 17.04.09 11:13
Titel: Eigenes Programm unter einem anderen Benutzer starten
Hallo,

wie kann ich ein Delphi-Programm schreiben, das unter einem anderen bzw. bestimmten Benutzer startet.
Mit "Run as" kann ich andere Programme starten, aber ich möchte ja mein eigenes beeinflussen.
Beispielsweise ein Benutzer mit Administrationsrechten.

Vielen Dank für die Hilfe


Hidden - Fr 17.04.09 11:27

Hi :)

(als Halblaie): Kannst du nicht einfach dein eigenes Programm mit RunAs noch einmal starten und dann die erste Version beenden?

mfG,


Nico80 - Fr 17.04.09 11:31

Geht das überhaupt und wenn ja wie?

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.


jaenicke - Fr 17.04.09 11:37

http://www.michael-puff.de/Developer/Delphi/Programme/
--> RunAsUser.zip

Das sollte das sein. Und für Adminrechte reicht auch ein Manifest, dann startet Windows das Programm automatisch so.


Nico80 - Fr 17.04.09 12:02

Ich möchte das Programm ja nicht mit Hilfe eines anderen starten.

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.


GTA-Place - Fr 17.04.09 12:12

Deshalb ja auch der Vorschlag mit dem Manifest:

http://www.vb-magazin.de/forums/blogs/janm/archive/2006/10/28/6330.aspx hat folgendes geschrieben:
2. Manifestdatei
Um das starten mit Admin Rechten zu erzwingen, kann man der Anwendung ein Manifest hinzufügen, das Informationen über die benötigten Rechte enthält.

Die Manifestdatei muss sich im Verzeichnis der Anwendung befinden und den Namen Anwendungsname.exe.manifest tragen. Für notepad.exe wäre das Manifest demnach notepad.exe.manifest.

Inhalt der Manifestdatei

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3"> <v3:security> <v3:requestedPrivileges> <!-- level can be "asInvoker", "highestAvailable", or "requireAdministrator" --> <v3:requestedExecutionLevel level="highestAvailable" /> </v3:requestedPrivileges> </v3:security> </v3:trustInfo> </assembly>



PS: Bitte nicht immer den vorherigen Beitrag zitieren, einfach unten auf "Antworten" klicken.


jaenicke - Fr 17.04.09 12:19

user profile iconNico80 hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte das Programm ja nicht mit Hilfe eines anderen starten.
Eben noch hast du gefragt wie das geht, sich selbst noch einmal so zu starten... :gruebel:
user profile iconNico80 hat folgendes geschrieben Zum zitierten Posting springen:
Geht das überhaupt und wenn ja wie?


Wie dem auch sei, jedenfalls kannst du mit einem Manifest sagen, dass Adminrechte gebraucht werden, ich weiß nicht so genau, ob man auch einen simplen Benutzerauswahldialog anzeigen lassen kann.


Nico80 - Fr 17.04.09 13:55

Vielleicht erkläre ich kurz mal was ich machen möchte.

Ein bestimmtes Verzeichnis kann ich nur mit Administrationrechten lesen/öffen.

Angemeldet bin ich als User ohne diese Zugriffsrechte.
Nun möchte ich ein Programm unter dem Admin-Account (antürlich passwort-geschützt) starten um auf das bestimmte Verzeichnis zuzugreifen.

Das geht doch wohl nicht über ein Manifest, oder?


Hidden - Fr 17.04.09 14:09

Ein Manifest ist soviel ich weiß nichts anderes als ein Flag für Windows, der bestimmte Einstellungen oder Designs bestimmt. In sofern: Doch, dieses Manifest scheint Windows zu sagen: "Starte mich mit Administratorrechten oder gar nicht. Biete em User dazu an, mit einem anderen Benutzer zu starten(RunAs)".

mfG,


bis11 - Fr 17.04.09 14:10

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie dem auch sei, jedenfalls kannst du mit einem Manifest sagen, dass Adminrechte gebraucht werden, ich weiß nicht so genau, ob man auch einen simplen Benutzerauswahldialog anzeigen lassen kann.
Das starten eine Programms mit Adminrechten über ein Manifest geht nur unter Windows VISTA. Unter Windows XP greift das Manifest nicht.

user profile iconNico80 hat folgendes geschrieben Zum zitierten Posting springen:

Angemeldet bin ich als User ohne diese Zugriffsrechte.
Nun möchte ich ein Programm unter dem Admin-Account (antürlich passwort-geschützt) starten um auf das bestimmte Verzeichnis zuzugreifen.

Das geht doch wohl nicht über ein Manifest, oder?


Dazu bietet sich der folgende Link [http://www.michael-puff.de/Developer/Delphi/Code-Snippets/Impersonate.shtml] an.