LabVIEWForum.de
DLL Fileserver Problem - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: DLL Fileserver Problem (/Thread-DLL-Fileserver-Problem)



DLL Fileserver Problem - F.Bi - 17.04.2013 12:09

Ich benutze in einem Projekt eine DLL von rotronic (Ich bin mir nicht sicher, ob ich diese weitergeben darf, aber ohne die nötige Hardware bringt das eh nichts.), die zurzeit auf meiner internen Festplatte (Lw. D:\ordner\test...) liegt. Da sich der Rest des Projekts aber auf einem Fileserver (\\name\ordner...\projekt xyz) befindet, soll auch die DLL dort abgelegt werden. Einfach verschieben und eine Anpassung des Pfades bringen nicht den Erfolg . (Aufruf über Constructor Node, Invoke Node usw.).
Die Exe funktioniert zwar (Installer auf einem anderen lokalen PC), aber in der Entwicklungsumgebung liefert das VI nicht das Signal, ist dort also nicht zu gebrauchen.

Das Problem scheint eine Sicherheitsrechtlinie zu sein, die den Zugriff auf den Server verhindert.

Das Sicherheitsrichtlinientool für den Codezugriff (Caspol.exe) müsste das beheben, allerdings müsste ich wissen, welche Parameter ich setzen müsste. http://msdn.microsoft.com/de-de/library/cb6t8dtz(v=vs.80).aspx

Kann mir da jemand Hilfestellung leisten, der sich in der Materie besser auskennt?


RE: DLL Fileserver Problem - rolfk - 17.04.2013 19:05

(17.04.2013 12:09 )F.Bi schrieb:  Ich benutze in einem Projekt eine DLL von rotronic (Ich bin mir nicht sicher, ob ich diese weitergeben darf, aber ohne die nötige Hardware bringt das eh nichts.), die zurzeit auf meiner internen Festplatte (Lw. D:\ordner\test...) liegt. Da sich der Rest des Projekts aber auf einem Fileserver (\\name\ordner...\projekt xyz) befindet, soll auch die DLL dort abgelegt werden. Einfach verschieben und eine Anpassung des Pfades bringen nicht den Erfolg . (Aufruf über Constructor Node, Invoke Node usw.).
Die Exe funktioniert zwar (Installer auf einem anderen lokalen PC), aber in der Entwicklungsumgebung liefert das VI nicht das Signal, ist dort also nicht zu gebrauchen.

Das Problem scheint eine Sicherheitsrechtlinie zu sein, die den Zugriff auf den Server verhindert.

Das Sicherheitsrichtlinientool für den Codezugriff (Caspol.exe) müsste das beheben, allerdings müsste ich wissen, welche Parameter ich setzen müsste. http://msdn.microsoft.com/de-de/library/cb6t8dtz(v=vs.80).aspx

Kann mir da jemand Hilfestellung leisten, der sich in der Materie besser auskennt?

Ist das eine ActiveX oder eine .Net DLL? Bei ActiveX muss wahrscheinlich die DLL am neuen Platz korrekt registriert werden um geladen werden zu können, bei .Net siehts aber schlecht aus. .Net DLLs werden normalerweise nur aus dem Verzeichnis geladen in dem das aktuelle Executable liegt oder müssen in der GAC (Global Assembly Cache) liegen. LabVIEW fügt da beim Ausführen aus der Entwickelumgebung noch explizit das Verzeichnis des aktuellen Projekts hinzu.


RE: DLL Fileserver Problem - F.Bi - 18.04.2013 07:01

Das Problem gibt es nicht mit der Executable, da dort die DLL im entsprechenden Ordner auf der interen Festplatte liegt, sondern nur mit der Entwicklungsumgebung, wenn die DLL nicht auf der internen Festpatte sondern auf dem Fileserver im Projektverzeichnis liegt.

Bei DLLs kenne ich mich nicht aus, ich nehme an, dass es sich um eine .Net DLL handelt (siehe Bilder im Anhang).


RE: DLL Fileserver Problem - rolfk - 18.04.2013 20:29

(18.04.2013 07:01 )F.Bi schrieb:  Das Problem gibt es nicht mit der Executable, da dort die DLL im entsprechenden Ordner auf der interen Festplatte liegt, sondern nur mit der Entwicklungsumgebung, wenn die DLL nicht auf der internen Festpatte sondern auf dem Fileserver im Projektverzeichnis liegt.

Bei DLLs kenne ich mich nicht aus, ich nehme an, dass es sich um eine .Net DLL handelt (siehe Bilder im Anhang).

Das sieht nach .Net aus und bedeutet dass die DLL nur im LabVIEW Verzeichnis, im Projektverzeichnis, und in der GAC liegen kann. Irgendwo anders wird immer Problem geben. Im Falle von normalen (nicht-LabVIEW) Programmen entfällt sogar das Projektverzeichnis.


RE: DLL Fileserver Problem - F.Bi - 19.04.2013 08:51

Ich habe jetzt noch einmal verschiedene Ablageorte der DLL ausprobiert.
Betroffen ist nur die Entwicklungsumgebung.
Auf der internen Festplatte spielt der gewählte Ordner keine Rolle, also nicht nur im Projektverzeichnis, da kann sie irgendwo sein.
Sobald sie aber auf dem (externen) Fileserver liegt, liefert sie keine "Daten", unabhängig davon, ob sie im Projektverzeichnis im Root zusammen mit der lvproj-Datei liegt oder im SubVI Verzeichnis zusammen mit den VIs, die die DLL nutzen.

Microsoft verhindert einen Zugriff auf DLLs, die nicht lokal abgelegt sind. Mit dem Sicherheitsrichtlinientool für den Codezugriff müsste es möglich sein, dieses "Verhalten" zu ändern, allerdings blicke ich bei den Parametern nicht durch.

Auf dem ZielPC liegt die DLL mit der Executable zusammen in einem Verzeichnis auf der lokalen Festplatte und funktioniert ohne Probleme.