AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi .exe Dateien kleiner / UPX-Windows-7 Problem / ntdll.dll
Thema durchsuchen
Ansicht
Themen-Optionen

.exe Dateien kleiner / UPX-Windows-7 Problem / ntdll.dll

Offene Frage von "berens"
Ein Thema von berens · begonnen am 13. Nov 2009 · letzter Beitrag vom 18. Feb 2010
Antwort Antwort
Seite 3 von 4     123 4      
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#21

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

  Alt 13. Nov 2009, 15:16
Kleine Anmerkung:
Die erste Zeile im NSIS-Script sollte "RequestExecutionLevel admin" sein.
Jedenfalls hat das unter Vista Wirkung und unter Win7 stört es zumindest nicht. Unsere Installationen funktionieren jedenfalls bisher.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#22

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

  Alt 13. Nov 2009, 15:25
Wie befürchtet löst "RequestExecutionLevel admin" zwar das Problem (Fehlermeldung ist weg, Danke Progman!), aber nicht die Ursache.

Irgendeine Idee wie ich das Problem "reproduzierbar" machen kann, so dass es auch auftritt, wenn ich es mit eingeschalteter UAC als normaler Benutzer ohne Adminrechte ausführe?
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#23

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

  Alt 13. Nov 2009, 16:19
Mit einem Tool wie madExcept kannst Du Dir zumindest den Callstack sichern und das ganze eingrenzen. Wenn das noch nicht hilft, kannst Du mittels der Win32-API OutputDebugString in den einzelnen Initialization-Abschnitten zumindest abklären was noch initialisiert wird bevor es rummst.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#24

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

  Alt 13. Nov 2009, 16:46
Ich verwende bereits Eurekalog, aber das konnte mir bei diesem Problem leider auch nicht helfen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#25

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

  Alt 13. Nov 2009, 17:31
Wenn das mit dem Debuggen daran hapert, daß es schneller knallt, als du verbinden kannst,
dann bau dir 'ne Verzögerung ein, damit du die Zeit bekommst.

erstell dir eine Unit, schreib da z.B. ein Sleep rein und füge diese Unit als aller Erste in die Usesliste des Projektes (.DPR) ein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#26

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

  Alt 13. Nov 2009, 18:25
Welches Manifest tust du an dein Programm dran?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#27

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

  Alt 19. Nov 2009, 12:21
Mich hätte mal interessiert, ob es da nun eine "richtige" Lösung gegeben hat *push*
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#28

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

  Alt 19. Nov 2009, 12:27
Sry, komplett vergessen gehabt noch ne Antwort zu schreiben, weil ich die letzten Tage viel unterwegs war.

Als Manifest verändere ich nichts, was mir Delphi 2007 mitliefert. Ist halt die Frage, ob ich da noch konkret was ändern muss (auf Dauer).

Zitat:
Wenn das mit dem Debuggen daran hapert, daß es schneller knallt, als du verbinden kannst,
dann bau dir 'ne Verzögerung ein, damit du die Zeit bekommst.

erstell dir eine Unit, schreib da z.B. ein Sleep rein und füge diese Unit als aller Erste in die Usesliste des Projektes (.DPR) ein.
Muss ich demnächst mal ausprobieren, leider aktuell kein Windows 7 PC zu testen da.

Das Problem ist nun vorläufig so "gelöst", dass ich im NSIS Script tatsächlich "RequestExecutionLevel admin" verwende (Danke Progman), seitdem funktioniert es.

Mir ist schon klar, dass das Problem irgendwie mit Benutzerrechten und der UAC zusammenhängt, leider konnte ich aber noch nicht herausfinden, woran genau, da sich das Problem ja wie gesagt nicht nachvollziehen lässt außer direkt im Anschluss an den Installer. Auch Ausführung als Gast-Benutzer macht keine Probleme.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#29

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

  Alt 18. Feb 2010, 12:44
Auch wenn dieses Thema ein wenig abgedriftet ist, da der Fehler nicht eindeutig benennbar ist, führe ich es mal mit aktuellen Informationen fort:

Mittlerweile tritt diese ntdll.dll Fehler auch ohne die UPX-Komprimierung unter Windows 7 auf. Ich habe jetzt einen Laptop mit Windows 7 Pro und habe dort mein Delphi mit allem drum und dran zum Laufen bekommen. Jetzt wird es interessant:

Wenn ich das Projekt ganz normal mit F9 starte, klappt zunächst alles. Wenn ich nun eine beliebige Änderung am Quelltext vornehme (z.B. x := 0; y := 0; ersetzen durch y := 0; x := 0) dann kommt bei allen nachfolgenden Starts mit F9 (oder auch ohne Debugger direkt mit der .exe) die o.g. Fehlermeldung mit der .dll Datei.

Wenn ich nun ein Leerzeichen einfüge (als den Quelltext geringfügig verändere) und dann wieder mit F9 starte, kommt die Fehlermeldung nicht mehr. Wunder der Technik. Zumindest bis zur nächsten Änderung, wo mehr als ein Leerzeichen geändert wird; dann kommt beim Programmstart wieder die Fehlermeldung.

Kurz zusammengefasst: Die Fehlermeldung mit der ntdll.dll erscheint, wenn das Projekt (manche/alle Units) komplett neu compiliert wurde. Solange, bis es danach nochmal kompiliert wird.

Das ergibt für mich keinen Sinn.

Ich habe bei _allen_ Units, die mein Programm verwendet (oder verwenden könnte) in der ersten Zeile nach "initialization" (sofern vorhanden) einen Haltepunkt gesetzt, falls dieser Abschnitt eine Exception verursacht. Da initialization immer vor der ersten Zeile des Projekts ausgeführt wird (Application.Initialize; <-- hat auch einen Haltepunkt von mir bekommen), könnten ja auch die eingebundenen Units das Problem sein. Sind Sie aber scheinbar nicht, denn die Fehlermeldung kommt immernoch _bevor_ die erste Zeile von initialization bei irgendeiner Unit aufgerufen wird.

Könnte Windows 7 selbst das Problem verursachen?
Hm, ich habe 2 (eigene) DLL-Dateien in meinem Programm eingebunden wie z.B.
function File_IsAccessDB(FileName: string): Boolean; external 'datenbank.dll'; Prüft die .exe beim Programmstart vor initialization vielleicht, ob die angegebenen .dll Dateien vorhanden sind und die Funktionen/Prozeduren exportieren, die ich verwende?

Oder: Wenn die .exe erstellt ist, kann es sein, dass sie vom Virenscanner, Windows IndexDienst oder einem anderen Programm so gesperrt wird, dass die nicht korrekt ausgeführt werden kann? (Auch mit deaktiviertem AntiVir klappt es nicht.)

Zum Thema Manifest: Ich habe wir in http://www.delphipraxis.net/internal...nifest+windows und http://www.delphi-treff.de/tutorials/vcl/vista/ beschrieben "Laufzeit-Themes" aktiviert. D.h. angeblich ist in meine .exe automatisch ein Manifest für Vista / Windows 7 enthalten. Stimmt das, oder brauche ich noch extra Modifikationen.

Wie bekomme ich meine .exe dazu, unter Win7 immer als Administrator zu starten (Bitte die Fragen, wie "sinnvoll" dies ist, zurückstellen. Danke.) Ich werde dazu gleich mal die SuFu anwerfen, falls wer spontan nen Tip hat, bitte sagen
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#30

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

  Alt 18. Feb 2010, 13:05
Zitat von berens:
Wie bekomme ich meine .exe dazu, unter Win7 immer als Administrator zu starten (Bitte die Fragen, wie "sinnvoll" dies ist, zurückstellen. Danke.) Ich werde dazu gleich mal die SuFu anwerfen, falls wer spontan nen Tip hat, bitte sagen
Ins Manifest schreiben, daß sie mit Adminrechten gestartet werden soll.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 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