AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Runtime-Packages unter Windows 2000

Ein Thema von cytrinox · begonnen am 8. Aug 2007 · letzter Beitrag vom 9. Sep 2007
Antwort Antwort
cytrinox

Registriert seit: 4. Sep 2006
88 Beiträge
 
#1

Runtime-Packages unter Windows 2000

  Alt 8. Aug 2007, 10:34
Hi,

Ich muss in einem Delphi-Programm zur Laufzeit einige *.bpl Dateien nachladen, deshalb hab ich das Programm mit Runtime-Packages gebaut.
D.h. die ganzen Delphi BPLs müssen beim Kunden im Programm-Verzeichnis liegen.

Zusätzlich hab ich auch noch einen Dienst, der ebenfalls *.bpls nachladen muss, daher auch dieser wieder mit Runtime-Packages gebaut und in das selbe Verzeichnis wie das Delphi-Programm gelegt.

Sowohl der Dienst als auch das Delphi-Programm laufen unter Windows XP problemlos parallel.

Unter Windows 2000 gibt es allerdings folgendes Problem:

Starte ich zuerst das Delphi-Programm und dann den Dienst, mach das Delphi-Programm wieder zu und öffne es erneut -> klappts.
Starte ich zuerst den Dienst und dann das Delphi-Programm beendet sich das Programm mit der Fehlermeldung: http://www.delphipraxis.net/download.php?id=27832

Meiner Meinung nach gibts da ein Rechteproblem unter Windows 2000. Denn ich vermute, dass die BPL genauso wie DLL Dateien von Windows nur einmal geladen und mit einem Refcount versehen werden. Da aber der Dienst (wenn er zuerst startet) mit SYSTEM-Konto Rechten läuft folglich auch die *.BPL (rtl100.bpl usw.) Dateien mitläd (und die ebenfalls unter SYSTEM-Konto Rechten laufen), hat das Delphi-Programm ein Problem - denn Windows hat die benötigten *.BPL Dateien zwar im Speicher, aber der Programmcode darf nicht von dem Delphi-Programm aus ausgeführt werden.

Wenn ich wie oben beschrieben zuerst das Programm starte, läd Windows die *.BPL Dateien, aber mit User-Rechten, folgich kann ein höher priviligierter Prozess (in dem Fall der Dienst) auch mit drauf zugreifen.

Hat da jemand eine Lösung? (Benutzerkonto des Dienstes ändern ist KEINE Lösung )
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Runtime-Packages unter Windows 2000

  Alt 2. Sep 2007, 01:41
Hi, nein das sollte niemals ein Problem sein. Ich kann dir garantieren, daß dann so ziemlich kein Programm nach dem Einloggen die ADVAPI32.DLL laden könnte (die wird von so ziemlich jedem Win32-Service benutzt). Das Problem muß also ein anderes sein.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#3

Re: Runtime-Packages unter Windows 2000

  Alt 2. Sep 2007, 01:46
BPL war noch nie die Stärke von Delphi. Gibt nur Probleme.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
cytrinox

Registriert seit: 4. Sep 2006
88 Beiträge
 
#4

Re: Runtime-Packages unter Windows 2000

  Alt 2. Sep 2007, 02:20
Zitat von Olli:
Hi, nein das sollte niemals ein Problem sein. Ich kann dir garantieren, daß dann so ziemlich kein Programm nach dem Einloggen die ADVAPI32.DLL laden könnte (die wird von so ziemlich jedem Win32-Service benutzt). Das Problem muß also ein anderes sein.
Nunja, ich hab ja nicht gesagt dass Windows 2000 damit ein Problem hat, da bin ich mir sogar sicher, dass Windows dafür entsprechende Funktionen eingebaut hat. Aber wir reden hier ja auch nicht von *.dll Dateien sondern von *.bpl Dateien die vermutlich auch noch irgend einen speziellen Loader innerhalb des Programms dass die Dateien verwendet braucht.

Ich könnte mir z.B. gut vorstellen das dieser Standard-Code irgendwo buggy ist.


Benutze übrigens Delphi 2006 Prof.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: Runtime-Packages unter Windows 2000

  Alt 2. Sep 2007, 03:00
BPLs sind DLLs. Haben eben nur eine andere Endung. Gilt ebenso für OCX-Dateien usw. usf.

Apache nennt sie - wie sonst in Unix üblich - SO (für Shared Object). Die Endung ist hier also irrelevant.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

Re: Runtime-Packages unter Windows 2000

  Alt 2. Sep 2007, 12:46
Sagen wir besser:
BPLs sind mehr als DLLs.

Letztendlich kann man BPLs nicht in anderen Sprachen (außer BC++) verwenden - oder nur sehr eingeschränkt. BPLs exportieren Funktionen, Komponenten und insbesondere Klasse nur für Delphianer.

Was mir schon sehr oft passiert ist, dass Programme mit BPLs garnicht erst angelaufen sind. Absturz hier, Absturz da. Dazu kommt noch die Abhängigkeit - dann darf eine Unit nicht in zwei Packages gleichzeitig sein...usw.

Hier gibts bisschen Info dazu.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
cytrinox

Registriert seit: 4. Sep 2006
88 Beiträge
 
#7

Re: Runtime-Packages unter Windows 2000

  Alt 9. Sep 2007, 13:07
OK, habs nun einigermaßen lösen können.

Ich verwende Komponenten der JEDI Library, und die greifen teilweise auf DirectDraw von DirectX zurück.
Installiert man die neuste DirectX Version verschwindet das Problem.

Allerdings muss da irgendwo eine Race Condition drin sein, denn ein anderes Programm das mit Runtime Packages und JEDI Komponenten gebaut wurde läuft einwandfrei (also auch ohne DirectX Update).
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:10 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