Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi .exe Dateien kleiner / UPX-Windows-7 Problem / ntdll.dll (https://www.delphipraxis.net/143322-exe-dateien-kleiner-upx-windows-7-problem-ntdll-dll.html)

hoika 18. Feb 2010 13:20

Re: .exe Dateien kleiner / UPX-Windows-7 Problem / ntdll.dll
 
Hallo,

Zitat:

Prüft die .exe beim Programmstart vor initialization vielleicht, ob die angegebenen .dll Dateien vorhanden sind und die Funktionen/Prozeduren exportieren, die ich verwende?
Nein, die Exe nicht, aber Windows selbst !
Beim Start der Exe werden auch die beiden DLL's geladen
und deren Methoden-Adressen an die Ladeadressen "angepaßt".

Es sein, dass beim Start der Exe über den Installer das Install-Verzeichnis
also Anwendungs-Verzeichnis genommen wird.
Dann findet Windows beim Start deiner Exe natürlich die Dlls nicht.

Ich würde mal folgendes machen
c:\temp anlegen
Install nach c:\temp\

Und auch nach c:\temp installieren !


Heiko

Assertor 18. Feb 2010 13:29

Re: .exe Dateien kleiner / UPX-Windows-7 Problem / ntdll.dll
 
Hi,

sag mal berens, verwendest Du EurekaLog? Sieh laut einem Deiner obigen Posts so aus (Unit ExceptionLog).

Fall ja, dann ist es das:
http://news.eurekalog.com/showthread.php?t=2622

Wird im nächsten RC von EurekaLog wohl gefixt.

Gruß,
Assertor

berens 18. Feb 2010 13:54

Re: .exe Dateien kleiner / UPX-Windows-7 Problem / ntdll.dll
 
Ich hatte tatsächlich EurekaLog installiert. Dieses habe ich nun komplett deinstalliert und aus allen Projekten die Verweise darauf entfernt. Danach neu kompiliert: Fehler immernoch da.

Ich habe nun mit Himatsu's Manifest-Create ein Manifest erstellt, es als Resource im selben Ordner wie das Projekt kompiliert und dann in die Projekt-Quelltext Unit eingefügt {$R w7.res}. Leider keine Besserung. Weitere Vorschläge?

Das Manifest. Zu Testzwecken mit Administrator Rechten.
Delphi-Quellcode:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="0.0.0.0"
    processorArchitecture="X86"
    name="welcome-soft"
    type="Win32"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="true"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
Das Manifest schein nicht korrekt zu funktionieren.

Wenn ich die identische .exe (mit Fehlermeldung) nach dieser Anleitung: http://www.virtual-cbfunk.de/Win7.htm starte (im Klatsch&Tratsch Forum verpöhnt; jetzt bitte keine Diskussionen um den Programmierstiel etc), funktioniert das Programm tadellos ohne eine einzige Fehlermeldung.

Was mache ich falsch?

Bzw.: Kann ich über ShowMessage oder so ausgeben, mit welchen Rechten das Programm jetzt tatsächlich gestartet wurde? Im Taskmanager steht die .exe immer mit dem aktuellen Benutzername drinnen.

Edit: Den Post von Hoika eben erst gesehen.
Hoika: Das "aktuelle" Problem dreht sich ja drum, dass der Fehler sogar bei Compilieren&Starten durch Delphi auftritt. Wenn ich das Programm über rechte Maustaste "als Admin starten" ausführe, kommt die Fehlermeldung nicht. Also ist das denke ich kein Problem mit den Pfaden. (Regulär bin ich im Moment auch Admin, btw.)

Kann es sein, dass die beiden .dll's auch die .res Datei mit dem Manifest brauchen?

Edit: Es scheint so als würde es nun funktionieren, nun, da die .dll Dateien auch das Manifest eingebunden haben. Da das Problem generell ja eher zufällig autritt, kann ich es aber noch nicht abschließend sagen.

Wenn das Problem gelöst ist, ist nun die Frage: Funktioniert es, weil das Manifest auch in den dlls eingebunden ist (generell) oder weil das Manifest den dlls (im Moment) Admin rechte gibt.

Auf Deutsch: War es nun ein Kompatibilitäts- oder ein Zugriffsrechteproblem?

Ich muss es demnächst nochmal mit einem Manifest mit normalen Benuterrechten testen. Bin mal gespannt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz