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/)
-   -   Delphi Horror unter Vista -> Zugriff auf eigenes Programmverzeichni (https://www.delphipraxis.net/91900-horror-unter-vista-zugriff-auf-eigenes-programmverzeichni.html)

Stephan 11. Mai 2007 15:44


Horror unter Vista -> Zugriff auf eigenes Programmverzeic
 
Hallo,

Ich habe folgendes Problem unter Vista:

Ein paar Vorabinformationen:
Mein Programm besteht aus folgenden Dateien:

1. programm.exe
2. update.exe

wenn ich nun in der programm.exe das automatische Update anstoße, dann wird von der programm.exe (welche ohne Adminrechte läuft) eine Kopie der update.exe in das temporäre Verzeichnis abgelegt und diese Kopie gestartet. Anschließend beendet sich die programm.exe automatisch. Das Problem ist aber nun, dass die update.exe keinen Schreibzugriff mehr auf das ursprüngliche Programmverzeichnis hat und folglich kein AutoUpdate durchführen kann.

Hat einer von euch eine Idee, wie ich dieses Problem lösen kann?

OregonGhost 11. Mai 2007 15:55

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Das Updaten ist ja ein Installationsvorgang - insofern wäre es doch üblich, das Update-Programm mit Administratorrechten zu starten, oder? Z.B. indem man ein Manifest mitliefert, das Administratorrechte anfordert? Auf Anhieb finde ich dazu folgendes:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
    <v3:security>
      <v3:requestedPrivileges>
        <v3:requestedExecutionLevel level="highestAvailable" />
      </v3:requestedPrivileges>
    </v3:security>
  </v3:trustInfo>
</assembly>
Habe es jedoch nicht damit ausprobiert.

sakura 11. Mai 2007 15:56

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Zitat:

Zitat von Stephan
Das Problem ist aber nun, dass die update.exe keinen Schreibzugriff mehr auf das ursprüngliche Programmverzeichnis hat

Das hat das Programm auch nicht. Wenn das Programm dort hinschreibt (und keine "Vista-ready" EXE ist, d.h. kein Vista-Manifest eingebunden ist), dann virtualisiert Vista die Zugriffe und schreib die in ein spezielles Verzeichnis des Users (z.B.: C:\Users\Username\AppData\Local\VirtualStore\Progr am Files).

Du musst die Update-Anwendung im administrativen Modus starten (ShellExecute als Parameter 2 'runas' übergeben).

...:cat:...

Stephan 11. Mai 2007 16:03

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Hallo,

Ich danke euch beiden!

@sakura: Ich habe deine Lösung getestet: funktioniert :) Vielen Dank! Ich glaub du hast mir damit echt den Abend gerettet - daher gebe ich dir hier mal ein (virtuelles) Bier aus :cheers:

sakura 11. Mai 2007 16:10

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Beachte bitte, das mein Tipp lediglich ein Quick'n Dirty Tipp ist, schau' Dir mal die Vista-Manifeste an, um das Problem elegant zu lösen ;)

...:cat:...

Stephan 11. Mai 2007 16:19

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Alles klar, danke für den Hinweis. Ich werde mir die Vista Manifests ansehen :)

Stephan 11. Mai 2007 17:15

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Jetzt frag ich nochmal ganz doof: Kennst du ein paar gute Quellen zu den Vista Manifests?

Stephan 12. Mai 2007 15:39

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Hallo,

Ich hab jetzt noch ein anderes Problem. Das Updateprogramm läuft nun unter Adminrechten. Allerdings soll das Updateprogramm zum Schluss das Hauptprogramm starten. Bei einem einfachen ShellExecute erbt jedoch das Hauptprogramm die Rechte des Updateprogramms - also Adminrechte. Das möchte ich natürlich nicht. Wie kann ich vom Updateprogramm das Hauptprogramm mit den Benutzerrechten des aktuell eingeloggten Benutzers starten?

Luckie 12. Mai 2007 16:01

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Zitat:

Zitat von Stephan
Ich hab jetzt noch ein anderes Problem.

;ach dazu bitte einen neuen Thread auf, sonst geht hier alles durcheinander. Danke.

SirThornberry 12. Mai 2007 16:44

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
ich versteh folgenden Teil im Titel nicht: Horror unter Vista
Das man im Programmverzeichnis keine Schreibrechte hat war doch schon unter xp so hat also recht wenig mit Vista zu tun :gruebel: Oder in wie weit hat sich das seit Vista verschärft? (hab noch nix mit Vista zu tun gehabt, daher die Frage/das Unverständnis)

OregonGhost 12. Mai 2007 16:51

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Zitat:

Zitat von SirThornberry
Das man im Programmverzeichnis keine Schreibrechte hat war doch schon unter xp so hat also recht wenig mit Vista zu tun :gruebel: Oder in wie weit hat sich das seit Vista verschärft? (hab noch nix mit Vista zu tun gehabt, daher die Frage/das Unverständnis)

Unter Vista starten Programme auch, wenn du Administrator bist, standardmäßig mit niedrigeren Rechten und haben somit erst einmal keine Administratorrechte. Unter XP konnte man den Großteil der Sicherheitsumschränkungen umgehen, indem man Admin war - unter Vista verhindert die UAC das im Normalfall.

alcaeus 12. Mai 2007 16:51

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Zitat:

Zitat von SirThornberry
Das man im Programmverzeichnis keine Schreibrechte hat war doch schon unter xp so hat also recht wenig mit Vista zu tun :gruebel: Oder in wie weit hat sich das seit Vista verschärft? (hab noch nix mit Vista zu tun gehabt, daher die Frage/das Unverständnis)

Unter Vista konnten Admins immer noch dort schreiben. Wenn ein Admin ein Programm ausfuehrt, hat dieses erstmal keine Schreibrechte auf das Programme-Verzeichnus. ;)

Greetz
alcaeus

Stephan 12. Mai 2007 16:52

Re: Horror unter Vista -> Zugriff auf eigenes Programmver
 
Hallo Jens,

Zitat:

Das man im Programmverzeichnis keine Schreibrechte hat war doch schon unter xp so hat also recht wenig mit Vista zu tun
Da hast du sicher recht. Unter Vista ist das alles aber noch etwas "komplexer" geworden. Falls du z.B. mit unzureichenden Rechten versuchst auf HKLM zu schreiben, dann wirst du intern von Vista auf HKCU umgeleitet. Desweiteren gibt es diverse Kompatibilitätsmodi - sodass manche Programmanfragen unter bestimmten Umständen vom echten Programmordner in einen VirtualStore umgeleitet werden (dieser befindet sich im Profil des aktuell eingeloggten Users).

Wenn man sich also mit Vista noch nicht auskennt (das trifft in meinem Fall zu, hab es lediglich testweise in einem VMWare laufen), gibt es eben einige Stolpersteine mehr.


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