Datei ins Windows Verzeichnis kopieren - Windows Vista



  • Hallo.
    Nachdem ich wirklich wochen auf der Suche war und nirgends eine erklärung gefunden habe, hoffe ich, dass mir jmd. hier weiterhelfen kann.

    Ich bin eigentlich php/ruby Entwickler (häme und spott bitte in einen seperaten thread 😃 ) muss aber nun gezwungenermaßen eine Installationsroutine (aufgrund des vorgegebenen Aussehens fallen InstallShield etc. weg) für einen Bildschirmschoner erstellen.
    Von Windows 95 bis XP macht das auch keine Probleme und ich hab das ganz passabel hinbekommen, aber Vista streikt.

    Ich habe keinen Weg gefunden, unter Vista etwas ins Windows Verzeichnis zu kopieren, bzw. ins System32 Verzeichnis, da wo Bildschirmschoner hingehören

    Zur Zeit benutze ich die "CopyFile()" Funktion, habe aber auch etliche andere bereits ohne Erfolg durchprobiert wie "RenameFile()" - kann ja auch rudimentär kopieren - etc.

    Weiß vllt. einer von euch hier Rat, oder hatte schonmal mit dem Problem zu kämpfen? bin für jeden Anregung dankbar.



  • Hallo

    CopyFile hat eine Rückgabe, mit der du den Fehler näher spezifizieren kannst.

    Ich vermute du scheiterst an der Rechteverwaltung von Vista. Unter Vista hat der normale Benutzer keine Schreibrechte auf das Programmverzeichniss. Die Installation sollte als Administrator ausgeführt werden.

    Da CopyFile eine WinAPI-Funktion ist und das Problem wohl nicht Builderspezifisch ist verschieb ich dich mal.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Danke für die rasche antwort.
    Ich prüfe gleich mal den rückgabe wert der funktion.
    Allerdings muss es doch möglich sein, einen bildschirmschoner zu installieren, ohne als administrator angemeldet zu sein.

    Wenn ich einen anderen bildschirmschoner installiere (als normaler nutzer), welcher eine installationsroutine mitbringt, fragt vista mich ja, ob ich den prozess ausführen will. Bestätige ich dies, kann dieses programm ja auch dateien in das system32 verzeichnis kopieren, bzw. dort erstellen.

    Dementsprechend sollte es eine lösung geben...

    Bin also weiter dankbar für jede hilfe. 😉



  • Die einzige Möglichkeit ist die Installation mit erhöhten Rechten. Wenn das Installationsprogramm ein Manifest mit <requireAdminstrator> enthält, dann fragt Vista selbständig nach Administratorrechten. Ansonsten bleibt nur der manuelle Start via rechte Maustaste -> Als Administrator ausführen.



  • Vielen Dank.

    Das war exakt das wonach ich gesucht habe, mit dem "Manifest +Vista" wird man ja auch auf google recht schnell fündig.

    Falls nochmal jmd. dieses Problem hat.
    Hier, die Lösung, welche bei mir funktioniert:

    Ma legt eine xml manifest datei an, welche folgendem aufbau folgt.
    Wichtig, diese datei utf-8 codiert speichern.

    Die datei sollte im selben verzeichnis, wie die setup Datei liegen und

    setup.exe.manifest.
    

    benannt werden.
    Also gleich dem datei namen der auszuführenden datei + .manifest am ende.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="VistaLogonCustomizer.exe" type="*"/>
      <description>elevate execution level</description>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
       <security>
         <requestedPrivileges>
          <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
         </requestedPrivileges>
       </security>
      </trustInfo>
      <dependency>
       <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
       </dependentAssembly>
      </dependency>
    </assembly>
    


  • Warum verwendest Du keinen Installer (z.B. WiX, welcher eine MSI-Datei erzueugt) um ein Installations-Programm zu schreiben? Dann hättest Du solche Probleme nicht...



  • Hallo

    indie-ecke schrieb:

    muss aber nun gezwungenermaßen eine Installationsroutine (aufgrund des vorgegebenen Aussehens fallen InstallShield etc. weg) für einen Bildschirmschoner erstellen.

    bis bald
    akari


Anmelden zum Antworten