Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Windows 7 Start einer Exe aus Programm blockiert (https://www.delphipraxis.net/157709-windows-7-start-einer-exe-aus-programm-blockiert.html)

zeras 21. Jan 2011 18:12

Windows 7 Start einer Exe aus Programm blockiert
 
Hallo,

ich habe ein Programm geschrieben, welches beim Start dann ein anderes Programm startet. Das läuft unter XP problemlos. Heute haben wir das auf einem Windows 7 Rechner installiert und gestartet. Es waren erst einmal Admin Rechte nötig, da es im Programmpfad installiert wurde. Das ist ja auch normal. Wenn ich dann aber das Programm gestartet habe und dann die Funktion zum Starten des anderen Programms nutzen wollte, kam wieder so eine Windows Anmeldung mit Paßwortabfrage.
Das zweite Programm befindet sich im selben Ordner wie das erste Programm.
Wie gesagt, der User hat keine Adminrechte. Nur zum Installieren wurde es von einem Admin installiert. Wer hat eine Idee? Kann ich da in Delphi etwas machen oder ist das reine Windows Angelegenheit?

Aufruf wie folgt:
Delphi-Quellcode:
 Err:= ShellExecute(0,
                      Nil,
                      PChar(fname),
                      Pchar(para),
                      Pchar(strtdir),
                      SW_NORMAL);

Bernhard Geyer 21. Jan 2011 18:26

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Du musst den Prozess mit CreateProcess starten damit die Rechte des startenden Prozesses vererbt werden. ShellExecute beauftragt die Windows Shell mit dem neu Starten. Und diese sorgt für neuerliche UAC-Prüfung/Abfrage.

Luckie 21. Jan 2011 18:42

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Was für ein Programm willst du starten?

Zitat:

Es waren erst einmal Admin Rechte nötig, da es im Programmpfad installiert wurde.
Und das verstehe ich nicht.

himitsu 21. Jan 2011 18:56

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Jupp, der Frage von Luckie schließe ich mich mit an.
Was für ein Programm soll denn gestartet werden und besitzt diese eventuell ein Admin-Manifest?
Und was passiert, wenn der Benutzer dieses Programm manuell startet?

@Bernhard:
Wenn der Benutzer der erste Programm ohne Adminrechte startet, dann besitzt das auch keine. es wird also mit den Rechten des jesweiligen Benutzers gestartet ... und wenn ShellExecute nun keine Rechte vererbt, dann wird das zweite Programm auch wieder mit den gleichen Benutzerrechten ausgeführt ... egal ob was vererbt wird.

zeras 21. Jan 2011 19:02

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1076447)
Du musst den Prozess mit CreateProcess starten damit die Rechte des startenden Prozesses vererbt werden. ShellExecute beauftragt die Windows Shell mit dem neu Starten. Und diese sorgt für neuerliche UAC-Prüfung/Abfrage.

Danke für den Tipp.
Programm ist schon geändert.
Nun muss ich nur wieder einen Rechner finden, der Windows 7 hat. Zu Hause arbeite ich immer noch mit XP und bin zufrieden damit.

himitsu 21. Jan 2011 19:09

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Erstell dir im XP einen Benutzer ohne Adminrechte.

Das entspricht dann in etwa dem Win7 ohne UAC eines Benutzers ohne Adminrechte.
Wenn der Benutzer keine Adminrechte erhalten kann, dann bringt das UAC auch nichts, da er sich darüber ja sowieso keine passenden Rechte besorgen kann.
Für beim Programmverzeichnis müssen da natürlich auch ähnliche Rechte eingestellt sein.

Luckie 21. Jan 2011 19:10

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Obwohl ich das noch nicht für die Lösung halte. Als was arbeitest du an deinem XP Rechner? Als Administrator?

zeras 21. Jan 2011 19:41

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von Luckie (Beitrag 1076457)
Obwohl ich das noch nicht für die Lösung halte. Als was arbeitest du an deinem XP Rechner? Als Administrator?

Ja, unter XP arbeite ich direkt als Admin.

Ich habe auf Arbeit auch einen XP Rechner ohne Admin und da läuft das ohne Probleme.

Also brauche ich doch einen Win7 Rechner zum Testen oder?


Zitat:

Zitat von himitsu (Beitrag 1076452)
Jupp, der Frage von Luckie schließe ich mich mit an.
Was für ein Programm soll denn gestartet werden und besitzt diese eventuell ein Admin-Manifest?
Und was passiert, wenn der Benutzer dieses Programm manuell startet?

Das 2. Programm ist eine Simulation einer Visualisierung. Es muss mit Parametern aufgerufen werden. Ob das ein Admin-Manifest mitbringt, weiß ich nicht. Es wird auf jeden Fall mit der Installation mitgebracht. Dazu nutze ich Inno. Ich kopiere mit Inno beide Programme in das selbe Programmverzeichnis und starte dann im ersten Programm das 2. Programm mit Parametern.

Luckie 21. Jan 2011 19:43

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Oder ein Windows 7 in einer VM.

zeras 21. Jan 2011 20:12

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von Luckie (Beitrag 1076462)
Oder ein Windows 7 in einer VM.

In der Firma bin ich ein normaler User, bringe aber meine Programme mit, die dann auf verschiedenen Rechnern installiert werden. Mein Admin hat mir schon angedeutet, dass er mir eine Windows 7 VM erstellen könnte. Das werde ich wohl nutzen müssen zum Testen.
Jetzt fällt mir ein, dass ich ein Netbook mit Win 7 Starter habe. Da sollte es ja vielleicht auch die gleichen Probleme machen, wenn ich kein Admin bin. Das werde ich am Wochenende mal testen mit ShellExecute und dann mit Createprocess. Ich werde weitere berichten, wie der Test ausgeht.

zeras 23. Jan 2011 17:17

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Nun habe ich das Programm auf dem Windows 7 Starter Rechner installiert.
Sowohl mit ShellExecute als auch mit CreateProcess geht es nicht ohne das Fenster "Benutzerkontensteuerung", obwohl noch im Admin Mode.
Wenn ich das 2. Programm dann per Hand im Explorer starte, kommt auch die Meldung. Irgendwie komisch. Bei XP gab es diese Abfragefenster nicht, obwohl ich nicht im Admin Mode war.

Möglicherweise kommt die Meldung, da es sehr hardwarenah programmiert sein muss wegen der Simulation??

Unterschied zwischen Admin und Nicht Admin. Beim Admin wird das Fenster zwar angezeigt, welches man bestätigen muss, beim normalen User muss man noch ein PW eingeben, wenn man weiter kommen will. Ist vielleicht auch logisch oder??

rollstuhlfahrer 23. Jan 2011 17:38

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Was installierst du denn? - Normale Programme, die Delphi kompiliert, muss man nicht installieren, sondern erst einmal einfach an ihren Bestimmungsort kopieren.
Punkt 2: Haben die beiden Anwendungen irgendwelche Manifeste (sei es als Datei oder Ressource), die Admin-Rechte wollen?
Punkt 3: Was passiert, wenn du die Anwendung mit Rechtsklick->Als Administrator ausführen startest?

(Punkt 4:) Mal angenommen, die Anwendungen haben keine Manifeste, die Admin-Rechte anfordern, was passiert, wenn du die Anwendungen als Nicht-Admin (ohne "Als Administrator starten") ausführst?

Bernhard

zeras 23. Jan 2011 18:36

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076710)
Was installierst du denn? - Normale Programme, die Delphi kompiliert, muss man nicht installieren, sondern erst einmal einfach an ihren Bestimmungsort kopieren.

Das das Programm noch weitere Dateien mitbringt, habe ich eine Setuproutine geschrieben. Du hast recht, ich könnte auch alles ins Programmverzeichnis kopieren. Als Setup nutze ich INNO.

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076710)
Punkt 2: Haben die beiden Anwendungen irgendwelche Manifeste (sei es als Datei oder Ressource), die Admin-Rechte wollen?

Das weiß ich nicht. Kann man das irgendwie rausfinden?

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076710)
Punkt 3: Was passiert, wenn du die Anwendung mit Rechtsklick->Als Administrator ausführen startest?

Dann kommt auch das Fenster zum Bestätigen.

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076710)
(Punkt 4:) Mal angenommen, die Anwendungen haben keine Manifeste, die Admin-Rechte anfordern, was passiert, wenn du die Anwendungen als Nicht-Admin (ohne "Als Administrator starten") ausführst?
Bernhard

Dann kommt immer das Fenster Benutzersteuerung.

rollstuhlfahrer 23. Jan 2011 18:47

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von zeras (Beitrag 1076732)
Das weiß ich nicht. Kann man das irgendwie rausfinden?

Sind das nicht deine eigenen Programme? - Ansonsten zuerst mal schauen ob es im gleichen Pfad wie die EXE eine Datei mit gleichem Namen + ".manifest" gibt. Diese mal umbenennen (dann ist kein Manifest mehr da) oder bei Delphi schauen, ob du (ältere Versionen) ein XPMan oder gar VistaMan als Komponente/Unit hast ODER (neuere Versionen) ob du was in den Projekt-Optionen eingestellt hast, was einen Namen ähnlich "Manifest" oder "Windows-Theme" hat.

Andere Frage: Die Anwendungen brauchen zwangsweise Admin-Rechte? - Also auch diejenige, die du nachlädst?

Noch ein anderer Punkt:
Delphi-Quellcode:
 Err:= ShellExecute(0, Nil, PChar(fname), Pchar(para), Pchar(strtdir), SW_NORMAL);
Das ist falsch. Du musst ein Verb (2. Parameter) angeben. Und zwar ist das "open" fürs öffnen und "runas" für Admin-Rechte (unter Windows >= Vista).

Bernhard

zeras 23. Jan 2011 19:53

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076733)
Sind das nicht deine eigenen Programme? - Ansonsten zuerst mal schauen ob es im gleichen Pfad wie die EXE eine Datei mit gleichem Namen + ".manifest" gibt. Diese mal umbenennen (dann ist kein Manifest mehr da) oder bei Delphi schauen, ob du (ältere Versionen) ein XPMan oder gar VistaMan als Komponente/Unit hast ODER (neuere Versionen) ob du was in den Projekt-Optionen eingestellt hast, was einen Namen ähnlich "Manifest" oder "Windows-Theme" hat.

Das erste Programm (in Delphi geschrieben) ist von mir. Das dann aufgerufene Programm ist eigentlich nur ein EXE File, welches eine Visualisierung einer Steuerung auf dem PC nachbildet.

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076733)
Andere Frage: Die Anwendungen brauchen zwangsweise Admin-Rechte? - Also auch diejenige, die du nachlädst?

Nein, dürfte eigentlich nicht sein, denn unter XP als normaler User habe ich keine derartigen Probleme.

Zitat:

Zitat von rollstuhlfahrer (Beitrag 1076733)
Noch ein anderer Punkt:
Delphi-Quellcode:
 Err:= ShellExecute(0, Nil, PChar(fname), Pchar(para), Pchar(strtdir), SW_NORMAL);
Das ist falsch. Du musst ein Verb (2. Parameter) angeben. Und zwar ist das "open" fürs öffnen und "runas" für Admin-Rechte (unter Windows >= Vista).

Danke für den Tipp. Das muss ich noch mal in die Quelle schauen und gegebenenfalls korrigieren.

Kann es mit dem INNO zusammenhängen, da die Dateien durch INNO ins Programmverzeichnis kopiert werden? Dürfte aber eigentlich auch nicht sein, da es auf XP läuft ohne Admin und ich das gleiche Setup genutzt habe.

zeras 25. Jan 2011 18:41

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1076447)
Du musst den Prozess mit CreateProcess starten damit die Rechte des startenden Prozesses vererbt werden. ShellExecute beauftragt die Windows Shell mit dem neu Starten. Und diese sorgt für neuerliche UAC-Prüfung/Abfrage.

Ich habe nun noch einmal alles testen können. CreateProcess brachte nicht den Erfolg. Aber durch Hinweise eines anderen Kollegen haben wir dann rausgefunden, dass man mit einem Windowsprogramm irgendwelche Sicherheitsrichtlinien erstellen kann, die dann mit dem Konsolenprogramm sdbinst dann in Windows eingespielt wird. Danach kam weder im Admin Mode, noch im normalen Usermode irgendein Benutzerkontensteuerungsfenster mehr. Damit sollte das Problem gelöst sein. Nun muss ich nur noch versuchen, diese Richtlinien in mein Setup (INNO) einzubauen.
Vielleicht hilft diese Info anderen Usern, die ähnliche Probleme haben.

Danke trotzdem für die Tipps.

rollstuhlfahrer 26. Jan 2011 12:51

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Du hast nicht zufällig die UAC ausgehebelt? - Wenn dem so ist, würde ich das ganz schnell wieder rückgängig machen.

Bernhard

himitsu 26. Jan 2011 13:08

AW: Windows 7 Start einer Exe aus Programm blockiert
 
ohne UAC ... hat was nicht die nötigen Rechte, dann wird es verboten

mit UAC ... hat was nicht die nötigen Rechte, dann wird versucht die nötigen Rechte anzufragen und dieses eventuell dann doch zu erlauben

rollstuhlfahrer 26. Jan 2011 13:22

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Mir kommt das etwas komisch vor. Wenn er sein Programm startet, will die UAC Admin-Rechte für das Programm durchsetzen. Jetzt nach einer Änderung im System will die UAC plötzlich keine Admin-Rechte mehr für das Programm durchsetzen und was am interessantesten ist: Laut Aussage des TE will die UAC auch dann keine Admin-Rechte abgesegnet bekommen, wenn das Programm im Admin-Modus ausgeführt werden soll.
Ich versuche daraus zu schließen, dass die UAC hier nicht mehr eingreifen soll. Ich glaube sogar, dass der Schluss richtig ist. Ansonsten sucht man das Admin-Problem nicht im System (bei irgendwelchen Sicherheitsrichtlinien), sondern in der Anwendung selbst. Die Sicherheitsrichtlinien sollte man nicht ändern (z.B. bei einer Installation), weil man dann z.B. die vom Sys-Admin gesetzten Regeln zufällig überschreiben könnte und dann den Sys-Admin in Bedrängnis bringen könnte (unbekannte Regeländerung -> unbekannte Sicherheitslücke??).

Bernhard

zeras 26. Jan 2011 17:58

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Was wollt ihr mir damit sagen?
Darf man das nun oder eher nicht?
Das 2. Programm kann ich nicht ändern. So haben den Versuch unternommen mit dem SDBinst. Unser Admin auf Arbeit hat dann mittels eines MS Programmes eine spezielle Datei erzeugt, die genau dieses 2. Programm irgendwie freischaltet. Ich habe leider noch keine weiteren Informationen. Vielleicht komme ich am Wochenende an die Daten ran und dann würde ich wieder Bescheid geben, was da gemacht wurde.

rollstuhlfahrer 26. Jan 2011 18:35

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Zitat:

Zitat von zeras (Beitrag 1077508)
Was wollt ihr mir damit sagen?

Pack das bloß nicht in einen Installer. Nutze du es, aber halte die Öffentlichkeit davon fern.

Zitat:

Zitat von zeras (Beitrag 1077508)
Darf man das nun oder eher nicht?

Privat darf man alles. Es sollte nur nicht Voraussetzung für ein Stück Software sein, welches du Anderen für Geld oder kostenlos zur Verfügung stellst.

Zitat:

Zitat von zeras (Beitrag 1077508)
Das 2. Programm kann ich nicht ändern.

Wenn es Admin-Rechte braucht, dass will es diese anfordern. Dazu kommt diese "Benutzerkonten"-Meldung (wie du es ausdrückst). Das ist dann leider richtig so, weil der User seit Win-Vista alles, was Admin-Rechte haben will (außer Dienste) absegnen soll/muss.

Bernhard

zeras 26. Jan 2011 18:50

AW: Windows 7 Start einer Exe aus Programm blockiert
 
Danke für die Infos.

Es sollte nicht nur auf meinem Rechner laufen, sondern auch auf Rechnern in der Firma. Da bin ich zwar nicht der Admin, aber der sollte es doch absegnen (Hat es erst einmal für eine Installation).
Den Hersteller vom 2. Programm kenne ich. Vielleicht gibt es doch noch Informationen, warum man das im Admin Mode starten sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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